shell中拆分字串

來源:互聯網
上載者:User

標籤:linux   shell   

最近系統學習了shell編程.

看到書本裡面的一個例子,很屌.之前自己也想過,但是沒有得到結果.

相信同學們也猜到這個例子了,就是一行字串的拆分.在看答案之前,同學們可以自己嘗試一下.

這裡我總結了三種方式.僅供參考.

1. 首先當然是書本裡面的內容:

echo jalsdfjlasjdl | sed "s/[^\n]/&\n/g"

這個例子的輸出就是把每個字元都單獨成為一行了.

sed語句相信同學們都不陌生.唯一讓人疑惑的可能就是&符號的使用.其實結合這個句子,也能夠理解了.就是替代前面匹配的最小單位.[^\n]即匹配任何一個不是換行的字元.那麼最小的單位自然就是單個字元.


2. 使用字串拓展.代碼如下:

#!/bin/bashstr="love you jingjing"for i in `seq ${#str}`doecho ${str:$i-1;1}done
在這段代碼中,使用了大括弧的拓展.第一個${#str}.代表str的長度.第二個${str:$i-1:1}意思是取str字串的第i-1個位置的1個字元.

所以這裡的列印自然也是按行列印出每個字元.這裡我不知道怎麼去解釋為什麼直接寫$i-1都可以.我以為會報錯.

3. 使用awk.這個是也不是完全自己的思考.也是通過借鑒資料總結的.

echo "love you jingjing " | awk -F "" ‘{for (i=1;i<=NF;i++) {print $i}}‘  

其實如果真的瞭解awk這段代碼也不是很難.痛點在於我不知道""兩個雙引號挨著表示的就是沒有分隔字元,所謂沒有,也就是空就是分隔字元.太拗口了

理解了這個點,其它內容也就可以理解了.

是不是開始聯想了.拆分成兩個或以上怎麼弄.

sed的方法:echo alksfdjals | sed "s/[^\n]\{2\}/&\n/g"

字串拓展的方式:

#!/bin/bash -xalai="love you jingjing"for ((i=0;$i<=${#alai};i=$i+2));do     echo ${alai:$i:2};done
這段代碼裡面使用了小括弧的特殊用法,即兩個小括弧連著,可以隨意進行運算.我個人美其名曰c語言形式.


總結了這麼幾個思路用了好幾天,而且都不是獨立思考的,都或多或少的借鑒了別人或者書本上面的思路.雖然消化了.但是未免有點缺少獨立的精神.

同學們在看了這篇文章以後,有沒有自己的不同的思路呢

shell中拆分字串

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.