使用內部字段分隔符讀取檔案

2021-09-27 06:49:26 字數 1634 閱讀 7104

特殊環境變數ifs,叫做內部字段分隔符(internal field separator)

預設情況下,bash shell缺省會以下列字元作為內部字段分隔符:

可以臨時更改ifs環境變數的值來限制被bash shell當作字段分隔符的字元。

如拾起只能識別換行符,ifs=$』\n』.

下面先新建乙個檔案,如下所示:

$ cat states

alabama

alaska

arizona

delaware

再新建乙個指令碼,命名為test

$cat test

#!/bin/bash

# reading values from a file

file=

"states"

ifs=$'\n'

for state in

$(cat $file)

doecho

"visit beautiful $state"

done

執行test指令碼,可以獲得如下輸出

visit beautiful alabama

visit beautiful alaska

visit beautiful arizona

visit beautiful delaware

注:如果要指定多個ifs字元,只要將它們在賦值行串起來就行

如ifs=$』\n』:;"會將換行符,冒號,分號,雙引號作為字段分隔符。

通過修改ifs,不停變換字段分隔符,可以用在迴圈處理檔案中

先新建乙個檔案:

$cat cities

shandong:jinan

heilongjiang:haerbin

fujian:fuzhou

yunan:kunming

再新建乙個指令碼,命名為test2

$cat test2

#!/bin/bash

#city in province

ifs=$'\n'

for city in

$(cat cities)

doecho city is $city

ifs=:

for value in

$city

doecho

" $value"

done

done

執行test2指令碼,可以獲得如下輸出:

city is shandong:jinan

shandong

jinan

city is heilongjiang haerbin

heilongjiang

haerbin

city is fujian fuzhou

fujian

fuzhou

city is yunan kunming

yunan

kunming

從上面的例子中,可以看到一開始將ifs設定為換行符,用於讀取每行資料

之後通過修改ifs為冒號,用於分隔每行資料中每個字段,最後通過巢狀迴圈展示。

字段分隔符IFS

ifs internal field seperator 在linux的shell中預設的分隔符,用來把command line分解成word 字段 ifs可以是white space 空白鍵 tab 鍵 enter 回車鍵 中的乙個或幾個。ifs是shell指令碼中的乙個重要概念,在處理文字資料時...

字段分隔符IFS

ifs的預設值為空白字元 換行符 製表符或者空格 當ifs被設定為逗號時,shell將逗號視為乙個定界符,因此變數 item在每次迭代中讀取由 逗號分隔的子串作為變數值。如果沒有把ifs設定成逗號,那麼上面的指令碼會將全部資料作為單個字串列印出來。data name,rollno,location ...

字段分隔符IFS

ifs 的預設值為空白字元 換行符 製表符或者空格 字段分隔符ifs的簡單案例 bin bash 模擬csv資料 data a,b,c 儲存初始的字段分隔符 oldifs ifs 修改字段分隔符 ifs for x in data doecho xdone 恢復至初始的字段分隔符 ifs oldif...