亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Linux Shell > 正文

Shell腳本逐行讀取文本文件(不改變文本格式)

2020-07-27 19:07:12
字體:
來源:轉載
供稿:網友

網上有很多 shell script 讀文本文件的例子,但是都沒有講出故事的全部,只說了一半。舉個例子,比如從一個 testfile 文件中讀取如下格式的文本行:

復制代碼 代碼如下:

$ vi testfile
ls      -a -l /bin |  sort
ls      -a -l /bin |  sort | wc
ls      -a -l |  grep sh | wc
ls      -a -l
ls      -a -l |       sort      |    wc

最常見的一個 line by line 讀取文件內容的例子就是:
復制代碼 代碼如下:

$ vi readfile
#!/bin/sh

testfile=$1
while read -r line
do
    echo $line
done < $testfile

$ chmod +x readfile
$ ./readfile testfile
ls -a -l /bin | sort
ls -a -l /bin | sort | wc
ls -a -l | grep sh | wc
ls -a -l
ls -a -l | sort | wc


這個例子的問題是讀取文本行后,文本格式發生了變化,和原來 testfile 文件的內容不完全一致,空格字符自動被刪除了一些。為什么會這樣呢?因為 IFS,如果在 shell script 里沒有明確指定 IFS 的話,IFS 會默認用來分割空格、制表、換行等,所以上面文本行里多余的空格和換行都被自動縮進了。

如果想要輸出 testfile 文件原有的格式,把每行(作為整體)原封不動的打印出來怎么辦?這時需要指定 IFS 變量,告訴 shell 以 "行" 為單位讀取。

復制代碼 代碼如下:

$ vi readfile
#!/bin/sh

IFS=""

testfile=$1
while read -r line
do
    echo $line
done < $testfile

$ ./readfile testfile
ls      -a -l /bin |  sort
ls      -a -l /bin |  sort | wc
ls      -a -l |  grep sh | wc
ls      -a -l
ls      -a -l |       sort      |    wc    


上面兩種方法的輸出不是差不多嗎,有什么關系呢,第一種還美觀一些?關系重大,VPSee 昨天寫了一個模擬 shell 的 C 程序,然后又寫了一個 shell script 來測試這個 C 程序,這個 script 需要從上面的 testfile 里讀取完整一行傳給 C 程序,如果按照上面的兩種方法會得到兩種不同的輸入格式,意義完全不同:
復制代碼 代碼如下:

$./mypipe ls -a -l | sort | wc
$./mypipe "ls -a -l | sort | wc "

顯然我要的是第2種輸入,把 "ls -a -l | sort | wc " 作為整體傳給我的 mypipe,來測試我的 mypipe 能不能正確識別出字符串里面的各種命令。

如果不用 IFS 的話,還有一種方法可以得到上面第二種方法的效果:

復制代碼 代碼如下:

#!/bin/sh

testfile=$1
x=`wc -l $testfile |awk '{print $1}'`

i=1
while [ $i -le $x ]
do
    echo "`head -$i  $testfile | tail -1`"
    i=`expr $i + 1`
done

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成人精品在线| 日韩av成人在线观看| 欧美日韩亚洲一区二区三区| 亚洲精品日韩久久久| 日韩中文字幕精品| 欧美丰满少妇xxxxx| 欧洲日本亚洲国产区| 亚洲国产婷婷香蕉久久久久久| 午夜精品美女自拍福到在线| 91麻豆国产语对白在线观看| 成人有码在线播放| 亚洲国产另类 国产精品国产免费| 亚洲精品永久免费精品| 欧亚精品中文字幕| 国产精品日日摸夜夜添夜夜av| 在线观看久久久久久| 国产亚洲精品美女| 精品露脸国产偷人在视频| 亚洲精品98久久久久久中文字幕| 一区二区三区www| 日韩精品久久久久久久玫瑰园| 国产成人综合精品在线| 亚洲一区av在线播放| 国内精品久久久久伊人av| 日韩在线精品视频| 欧美另类暴力丝袜| 伊人久久男人天堂| 久久精品视频va| 日韩中文综合网| 亚洲美女性生活视频| 欧美日韩ab片| 九九九久久久久久| 国产第一区电影| 一区二区欧美久久| 欧美电影免费在线观看| 国产欧美一区二区三区视频| 亚洲电影第1页| 日韩视频第一页| 精品中文字幕在线2019| 日本亚洲欧美成人| 最近2019年好看中文字幕视频| 日本亚洲欧洲色| 国产91精品高潮白浆喷水| 97在线免费观看| 永久免费看mv网站入口亚洲| 亚洲人午夜色婷婷| 欧美理论电影在线播放| 日韩综合视频在线观看| 亚洲一区二区中文字幕| 日韩av男人的天堂| 欧美wwwwww| 日韩欧美在线一区| 日韩精品中文字幕久久臀| 日韩激情第一页| 欧美精品亚州精品| 久久亚洲电影天堂| 91久久精品美女高潮| 久久中文字幕视频| 亚洲视频视频在线| 亚洲一区二区中文| 国产免费一区二区三区香蕉精| 97色在线观看| 午夜精品福利在线观看| 欧美激情在线一区| 国产精品爱啪在线线免费观看| 亚洲欧洲在线观看| 亚洲欧洲日韩国产| 亚洲男人天堂手机在线| 91久久精品在线| 国产亚洲美女精品久久久| 中文字幕免费精品一区高清| 精品国产91乱高清在线观看| 日韩av最新在线观看| 成人久久18免费网站图片| 亚洲欧洲在线视频| 国产一区av在线| 久久精品青青大伊人av| 日韩中文字幕视频在线观看| 国内精品美女av在线播放| 日本久久久久亚洲中字幕| 日本亚洲欧洲色| 亚洲欧美一区二区三区情侣bbw| 91中文精品字幕在线视频| 国产精品久久久久久久午夜| 色偷偷噜噜噜亚洲男人的天堂| 久久最新资源网| 国产精品99久久久久久www| 精品国产乱码久久久久久婷婷| 国产精品第一页在线| 成人av番号网| 日韩在线欧美在线国产在线| 亚洲电影av在线| 日韩精品亚洲视频| 欧美日韩激情美女| 亚洲视频第一页| 亚洲精品一区二三区不卡| 国产精品日本精品| 日韩av影院在线观看| 国产一区视频在线| 久久久久久久一区二区三区| 日韩一区二区久久久| 亚洲最新在线视频| 久久色在线播放| 欧美激情精品久久久久久免费印度| 91色视频在线导航| 69国产精品成人在线播放| 国产精品一区二区久久| 国产精品影片在线观看| 日韩在线观看网站| 伦理中文字幕亚洲| 91影院在线免费观看视频| 欧美亚洲成人xxx| 日韩黄色高清视频| 欧美成人黄色小视频| 久久国内精品一国内精品| 国产精品视频在线播放| 综合国产在线视频| 91精品国产777在线观看| 91超碰中文字幕久久精品| 久久综合久久八八| 91精品在线国产| 亚洲欧洲av一区二区| 国产亚洲欧美日韩美女| 亚洲天堂网站在线观看视频| 国产精品成熟老女人| 欧美激情欧美狂野欧美精品| 国产精品稀缺呦系列在线| 国产精品日韩欧美| 亚洲国产精品悠悠久久琪琪| 久久五月天综合| 国产一区二区三区高清在线观看| 日韩一区二区三区国产| 日韩av片永久免费网站| 日本精品一区二区三区在线播放视频| 国产精品69久久| 成人免费视频xnxx.com| 欧美亚洲另类激情另类| 亚洲精品动漫100p| 亚洲综合中文字幕在线观看| 国产一区二区丝袜高跟鞋图片| 亚洲精品久久7777777| 国产啪精品视频| 美女福利精品视频| 亚洲精品大尺度| 成人精品在线观看| 国产成人综合精品在线| 亚洲色图av在线| 欧美成人精品不卡视频在线观看| 欧美在线www| 亚洲天堂2020| 91精品国产91久久久久久最新| 国产精品都在这里| 国产精品免费一区豆花| 久久国产精品免费视频| 韩国国内大量揄拍精品视频| 国产在线999| 色哟哟入口国产精品| 国产精品福利无圣光在线一区| 久久综合网hezyo| 欧美日韩性生活视频| 日韩在线一区二区三区免费视频| 97免费中文视频在线观看| 国产性猛交xxxx免费看久久| 亚洲va欧美va国产综合久久|