1. 程式人生 > 其它 >shell 讀取檔案內容 不以空格換行 再把每行的字串切分取一部分

shell 讀取檔案內容 不以空格換行 再把每行的字串切分取一部分

最近有個需求,想讀取一個檔案中的每行資料,分別處理,用for迴圈的時候,會把每行的資料按照空格和回車進行迴圈,沒法拿到整行資料,查了下網上資料,決定修改下分隔符號。

指令碼及說明如下:

IFS_old=$IFS # 記錄老的分隔符
IFS=$'\n' # 以換行符作為分隔符
for line in `cat 要處理的檔案`;

do
echo "$line" # 需要處理邏輯
done;
IFS=$IFS_old # 分隔符改回去 不影響下次使用

這樣一來就可以

在需要處理的邏輯裡面,我們還想以tab為分隔符,取每行中的切分開的字串陣列的某一部分:可以這樣處理

IFS_old=$IFS
IFS=$'\n'

for line in `cat 要處理的檔案`;
do
IFS=$IFS_old # 分隔符改回去
arr=($line) # 拆分資料
echo ${arr[0]} # 取陣列的第一部分
done;

IFS=$IFS_old # 分隔符改回去 不影響下次使用 為了防止檔案沒內容 沒進入迴圈體

如果要處理的需求是我們想看都什麼時候有人登陸的系統

2019-01-01 admin login

2019-01-02 admin2 login

2019-01-05 admin3 login

則結果為:

2019-01-01

2019-01-02

2019-01-05