Shell如何遍歷包含空格的文本詳解
shell遍歷文件
有時(shí)候要對(duì)某個(gè)文件夾下面的所有文件做同樣的處理,比如對(duì)每個(gè)文件統(tǒng)計(jì)行數(shù),這時(shí)用遍歷文件的方式就很簡(jiǎn)單了。
$ for i in `ls`;do wc -l $i;done
55552 f123.txt
55819 f124.txt
56118 f125.txt
56404 f126.txt
56633 f127.txt
56842 f128.txt
這里使用了for...do...done循環(huán),注意循環(huán)語(yǔ)句寫在一行上面時(shí),要用 ; 分隔開來。
ls要用反引號(hào)擴(kuò)起來。
Shell遍歷空格文本
處理包含空格或特殊字符的文件是每個(gè)使用Linux的人都應(yīng)必須掌握的。本文我們將討論如何在帶有空格的文件上使用for循環(huán)。
測(cè)試文本如下:
This line has spaces
these
do
not
現(xiàn)在,我們使用for循環(huán)來迭代這個(gè)文本。當(dāng)我們執(zhí)行for循環(huán)時(shí),shell會(huì)看到第一行的空格,并假設(shè)每一行都是不同的迭代。
[root@test ~]# for i in $(cat test);do echo $i;done This line has spaces these do not
IFS定義了在分隔單詞時(shí)用作分隔的字符或字符集。
維基百科:對(duì)于Unix操作系統(tǒng)的許多命令行解釋器(“shell”),內(nèi)部字段分隔符(簡(jiǎn)稱IFS)是指一個(gè)變量,該變量定義用于將模式拆分為某些操作的標(biāo)記的字符。
默認(rèn)情況下,IFS(字段分隔符)的值為<space><tab><newline>。因此,當(dāng)shell看到第一行中的空格時(shí),它將該行劃分為四個(gè)標(biāo)記(四個(gè)單詞)。
修改IFS的值來滿足我們的需求
IFS是一個(gè)環(huán)境變量。在更改環(huán)境變量之前,最好的做法是保存它們的內(nèi)容。這樣就可以輕松地將它們?cè)O(shè)置為默認(rèn)值。
首先,我們先將IFS變量的值保存到OLDIFS中。
OLDIFS=$IFS
我們可以手動(dòng)設(shè)置IFS成任何我們想要的值。在這種情況下,我們需要將字段分隔符作為換行符。我們可以像任何變量一樣設(shè)置IFS。
IFS=<our value>
要將IFS設(shè)置為換行符,我們可以使用命令替換從echo命令獲取換行符輸出。
IFS=`echo -e "\n"`
echo -e "\n"的輸出是一個(gè)換行符。用于反引號(hào)封裝,將shell命令的輸出作為變量IFS。
現(xiàn)在,當(dāng)我們執(zhí)行相同的for循環(huán)時(shí),shell將通過換行符來分隔文本。
[root@test ~]# for i in $(cat test); do echo $i; done This line has spaces these do not
翻譯自Looping Through a File that Contains Spaces – Bash for Loop
總結(jié)
到此這篇關(guān)于Shell如何遍歷包含空格文本的文章就介紹到這了,更多相關(guān)Shell遍歷空格文本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
jenkins 實(shí)現(xiàn)shell腳本化定時(shí)執(zhí)行任務(wù)的方法
這篇文章主要介紹了jenkins 實(shí)現(xiàn)shell腳本化定時(shí)執(zhí)行任務(wù),解決訪問是jenkins構(gòu)建好之后將jar遠(yuǎn)程推送到生產(chǎn)服務(wù)器,提前退出后臺(tái)執(zhí)行服務(wù)器遠(yuǎn)程腳本,腳本通過ngnx提前切走nginx代理auction sleep 1800s,半小時(shí)后執(zhí)行更新重啟,具體操作過程跟隨小編一起看看吧2022-01-01Linux tar 命令出現(xiàn) Cowardly refusing to create an empty archive
這篇文章主要介紹了Linux tar 命令出現(xiàn) Cowardly refusing to create an empty archive 錯(cuò)誤解決辦法的相關(guān)資料,需要的朋友可以參考下2017-04-04Shell腳本實(shí)現(xiàn)亂序排列文件內(nèi)容的多種方法(洗牌問題)
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)亂序排列文件內(nèi)容的多種方法(洗牌問題),本文給出3個(gè)Shell腳本和一個(gè)Python腳本解決亂序排列文件內(nèi)容問題,需要的朋友可以參考下2015-01-01Bash Shell中的select命令簡(jiǎn)單使用示例
這篇文章主要介紹了Bash Shell中的select命令簡(jiǎn)單使用示例,通常用于流程控制功能的實(shí)現(xiàn),需要的朋友可以參考下2015-07-07SVN限制message字符個(gè)數(shù)及格式的實(shí)例
下面小編就為大家?guī)硪黄猄VN限制message字符個(gè)數(shù)及格式的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03ssh,scp自動(dòng)登陸的實(shí)現(xiàn)方法
這篇文章主要介紹ssh,scp自動(dòng)登陸的實(shí)現(xiàn)方法,需要的朋友可以參考下2013-02-02