shell 讀取檔案內容 不以空格換行 再把每行的字串切分取一部分
阿新 • • 發佈:2021-12-12
最近有個需求,想讀取一個檔案中的每行資料,分別處理,用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