如果有人問你,Linux系統中的分隔符是什麼?怎麼查看當前的設置?
那麼怎麼回答呢?
這裡就展開說明一下:
IFS是内部字段分隔符,在Linux shell裡面還有awk的命令裡面可以指定不同的分隔符。
IFS是一個局部變量,通過env| grep ^IFS是查看不到的。
需要直接使用set|grep ^IFS可以查看到。
一般結果是:
IFS=$' \t\n'
也就是空格、制表符、換行符組成的。通俗講就是空格、回車加換行,IFS默認值為空白字符。
直接輸出IFS是看不出來的時候,可以通過命令把它轉化成二進制的方式就可以看到了。
命令是echo "$IFS"|od -b ,需要注意的是IFS變量必須照原樣輸出,把變量IFS放入雙引号,以保留空格和換行符。
這樣得到結果是0000000 040 011 012 012
040代表空格,011是Tab代表水平制表符,012是換行符\n。
這裡最後一個012是因為echo默認會換行的。
現在舉一個例子來說明一下:
cat text.txt
1
2
3
如果使用子shell的方式或者反引用的方式可以将命令的輸入讀入一個變量中,可以把它放入雙引号中,以保留空格和換行符\n。
#! /bin/bash
oldifs=$IFS
IFS=$"\n"
for i in "$(</tmp/text.txt)"
do
echo $i
done
IFS=oldifs
這裡首先把Linux系統默認的内部字段分隔符IFS 空格、制表符、換行賦值給變量oldifs,然後把當前Linux系統默認字段分隔符換成了\n換行符。然後逐行顯示文件内容,最後再把默認的Linux系統内部字段分隔符還原成空格、制表符、換行符。
這樣,會原樣輸出text.txt文件的内容。
五爪神龍
鼓勵的話語:難走的路要慢慢走,善良的心一定要時時有!
,