我有一個日誌文件保存在我的電腦上,我希望創建一個腳本來解析。我的目標是從日誌文件的每一行中拉出兩個值,然後在同一行中將它們相鄰(可能是連字符分隔)並輸出,然後遍歷日誌中的每一行。例如,以下日誌:將兩個bash循環結果值輸出到同一行?
123-abc-thething01, 6, 1234, metadata, metadata, [email protected], metadata, 123abc
123-abc-thething02, 6, 1234, metadata, metadata, [email protected], metadata, 123abc
123-abc-thething03, 6, 1234, metadata, metadata, [email protected], metadata, 123abc
運行該腳本將有望實現後...
123-abc-thething01 - [email protected]
123-abc-thething02 - [email protected]
123-abc-thething03 - [email protected]
此刻,我有以下的代碼是拉動正確的價值觀,但它是簡單地輸出所有'var1',然後輸出所有的'var2',如下所示,而不是逐行掃描,在一行上輸出第1行的var1和var2值,然後在新行上輸出var1和第2行的var2等等
123-abc-thething01 123-abc-thething02 123-abc-thething03
[email protected] [email protected] [email protected]
我花了一些時間嘗試不同的方式做到這一點,但我有點難住。我現在不是很強烈,所以任何幫助將不勝感激。謝謝。
#!/bin/bash
for i in logfile.txt
do
var1=$(cat logfile.txt | awk '{print $1}' | sed 's/,//g')
var2=$(cat logfile.txt | grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*')
done
echo ${var1}
echo ${var2}
你不應該使用shell腳本來解析文本文件,例如這可以只使用awk awk -F,{print $ 1「 - 」$ 6}'文件來完成 – 123
根據你的更新需求,你也可以使用perl'perl -ne'print「$ 1 - $ 2 \ n」如果/([^,]+).*,([[:alnum:] ._-] + @ [[:alnum:] ._-] + )/'' – 123
謝謝!這很方便,我想我會採用這種方法。 – Dronzil