字段分隔符IFS

2021-06-19 08:32:43 字數 1276 閱讀 7044

ifs(internal field seperator)在linux的shell中預設的分隔符,用來把command line分解成word(字段)。

ifs可以是white space(空白鍵)、tab( **鍵)、enter( 回車鍵)中的乙個或幾個。

ifs是shell指令碼中的乙個重要概念,在處理文字資料時,它是相當有用的。內部字段分隔符是用於特定用途的定界符。

ifs是儲存定界符的環境變數,它是當前shell環境使用的預設定界字串。

ifs的設定方法很簡單,和普通變數設定方法類似:

ifs=":"

建議設定ifs前儲存原ifs的值,在使用後及時恢復。

使用ifs忽略換行符的示例**如下:

#!/bin/bash

file="university"

ifs=$'\n'

for university in `cat $file`

do echo "nanjing has famous university of $university"

done

~

university的內容如下:

[root@localhost shell]# cat university

southeast universiyt

nanjing university

nanshida

nanhang

nanligong

執行結果如下:

oot@localhost shell]# ./ifs.sh 

nanjing has famous university of southeast universiyt

nanjing has famous university of nanjing university

nanjing has famous university of nanshida

nanjing has famous university of nanhang

nanjing has famous university of nanligong

在處理長指令碼時,可能在乙個地方修改ifs的值,然後忘掉它了並在指令碼其他地方以為還是預設的值。

乙個可參考的簡單實踐在改變ifs之前儲存原來ifs值,在後再恢復它。

這種技術可以這樣程式設計:

ifs.old=$ifs

ifs=$'\n'

ifs=$ifs.old

字段分隔符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...

有關awk欄位分隔符

echo a b c d awk 我的理解是應該把輸出顯示為如下的方式 a b c d dan但執行的結果不是這樣的 a b c d 為什麼啊 echo a b c d awk 或echo a b c d awk begin 或echo a b c d awk 這個方法我知道 我是想知道為什麼ofs...