shell中設定IFS,使用自定義分割符

2021-10-12 17:31:26 字數 691 閱讀 8742

1.概述

在bash中,ifs(internal filed separator,內部域分隔符)是一種 set 變數,當 shell 處理字串時,shell會根據 ifs 的值,預設是空格、tab鍵、換行來解析讀入的變數,然後對特殊字元進行處理,最後重新組合賦值給該變數。

2.使用範圍

在echo、cat、awk時,ifs會影響對字段的分割

所以在輸出某些含有ifs值對應的字段時,會截斷輸出。又不能達到自己想要的效果時,就需要修改ifs值。如某欄位含有空格,而輸出列印時,不想截斷空格前後字元,做為兩個字元,就需要用到重新設定ifs值

3.用法

3.1建立乙個test.txt檔案,檔案內容如下

watermelon grape

3.2在shell中修改ifs,達到一行一行的輸出

#在修改ifs前,保留原ifs

ifs_old=

$ifs

#設定換行為內部域分隔符

ifs=

'\n'

for line in

`cat test.txt`

doecho

$done

#在shell結束前,還原ifs

ifs=

$ifs_old

exit 0

3.2輸出效果:

watermelon grape

shell中的特殊變數IFS

當我越來越習慣python的編寫風格時,我經常會想用bash去遍歷乙個檔案的行,並將讀取的行進行處理。但乙個詭異的情況,如果我的文字類似於這樣 the first line.the second line.the third line.for line in cat filename doecho ...

不可不知的shell中的IFS

linux下有乙個特殊的環境變數叫做ifs,叫做內部字段分隔符 internal field separator 它可以決定專案列表或值的列表的分隔符,ifs的預設值為空格,tab製表符或換行符。使用for迴圈讀取專案的列表或直列表時,就會根據ifs的值判斷列表中的個數,最終決定迴圈的次數。預設情況...

shell中顏色的設定

shell指令碼中echo顯示內容帶顏色顯示,echo顯示帶顏色,需要使用引數 e 格式如下 複製 如下 echo e 033 字背景顏色 文字顏色m字串 033 0m 例如 複製 如下 echo e 033 41 36m something here 033 0m 其中41的位置代表底色,36的位...