2016-06-20 13 views
0

同じ列名を持つ複数のタブ区切りファイルがあります。サンプルファイルはスナップショットとして添付されています。今unix端末の複数のファイルの特定の列の文字列を置き換えます。

enter image description here

、私は 'RAC' でcoloumn 4内のすべての 'INV' を交換したいと思います。私は次のawkコードを書いた。しかし、それはうまく動作しません。誰か私のコードをチェックできますか? [ here ]を示すように

#!/bin/bash 
path=path/to/dir/containing/the/files/to/be/processed 
for file in `ls $path` 
do 
echo processing $file 
awk '{ if ($4 == "INS") {$4 = "RAC"; print} else { print }; }' $file> ${file}_new.txt 
done; 
+2

テキストとしてのサンプルの入力データを記載してくださいだろう。あなたを助けようとする人は誰もが手でデータを入力する必要があります。 – Kusalananda

+0

これは便利です[http://unix.stackexchange.com/questions/218896/how-to-replace-value-for-a-given-condition-in-specific-column-of-file](http:/ /unix.stackexchange.com/questions/218896/how-to-replace-value-for-a-given-condition-in-specific-column-of-file) – syadav

答えて

1

ls outputを解析しないでください。

find /path/to/files -maxdepth 1 -type f -print0 | while read -r -d '' filename 
do 
awk '$4=="INV"{$4="RAC"}{print}' "$filename" > tempfile && mv tempfile "$filename" 
done 

は、それが

+0

そこに読み込みがない可能性があります... – 123

+0

@ 123:確かに..修正した – sjsam

+0

ありがとう!それは今働いた。私は提案を感謝します。 – panbar

関連する問題