腳本應該讀取路徑中的每個文件並替換每個單行中的字符串。如何在同一路徑中迭代10個差異輸入文件名時創建臨時文件和mv替換 請諮詢需要Shell腳本-awk選項幫助
的SunOS 5.10
FILES=/export/home/*.txt
for f in $FILES
do
echo "Processing $f file..."
cat $f | awk 'BEGIN {FS="|"; OFS="|"} {$8=substr($8, 1, 6)"XXXXXXXXXX\""; print}'
done
輸入文件
"2013-04-30"|"X"|"0000628"|"15000231"|"1999-12-05"|"ST"|"2455525445552000"|"1111-11-11"|75.00|"XXE11111"|"224425"
"2013-04-30"|"Y"|"0000928"|"95000232"|"1999-12-05"|"VT"|"2455525445552000"|"1111-11-11"|95.00|"VVE11111"|"224425"
輸出文件
"2013-04-30"|"X"|"0000628"|"15000231"|"1999-12-05"|"ST"|"245552xxxxxxxxxx"|"1111-11-11"|75.00|"XXE11111"|"224425"
"2013-04-30"|"Y"|"0000928"|"95000232"|"1999-12-05"|"VT"|"245552xxxxxxxxxx"|"1111-11-11"|95.00|"VVE11111"|"224425"
不知道如何使用這個
cat $f | awk 'BEGIN {FS="|"; OFS="|"} {$8=substr($8, 1, 6)"XXXXXXXXXX\""; print}' $f > tmp.txt && mv tmp.txt $f
當您執行'FILES =/export/home/*。txt'時,您實際上是在存儲glob模式本身,而不是文件名列表。最好不要這樣做,或者使用一個shell來存儲結果作爲數組。 –
fedorqui-pls以更好的方式編輯我需要的答案 – Sen
'cat | awk ...'可以更好地寫成'awk ... '。 –
twalberg