2016-08-07 3 views
1

値のCSVファイルを検索する方法を理解しようとしています。この場合は "---"と同じ行に "---"と表示されます。私が使用する方法を見つける必要がある任意の列のデータを一致させ、同じ行の他のすべての列のデータを変更します。

awk '{if ($(NF-1)=="---")$NF="---"}{print $0}' file 

IE-、

私はAWKでこれを行うために探してきたが、私は知られている唯一のフィールドをチェックする方法を見つけ出すことができます

1)値

2)フィールドの値を探すためにすべてのフィールドを検索し、に同じレコードのすべての進むフィールドを変更:ループ、私はに(それは私が求めている理由です)だと思います特定の値(「---」)

アイデアは高く評価されます。そして私が言いたいことが、私がこれで作った試行錯誤の試行をすべて伝えないならば、私はお詫びします。

答えて

3

のは、このテストファイルについて考えてみましょう:---を探して---に同じ行の先行するすべての列を変更するには

$ cat file.csv 
a,b,---,d,e 
1,---,3,4,5 

を:また

$ awk -F, '{f=0; for (i=NF;i>=1;i--) {$i=(f?"---":$i); f=($i=="---")}} 1' OFS=, file.csv 
---,---,---,d,e 
---,---,3,4,5 

---を探し、後続のすべてを変更するには同じ列の(後続の)列は、---

$ awk -F, '{f=0; for (i=1;i<=NF;i++) {$i=(f?"---":$i); f=($i=="---")}} 1' OFS=, file.csv 
a,b,---,---,--- 
1,---,---,---,--- 
+1

これはまさに私が探していたものです。パッテンできるAwkの1つのライナーは、前に進んでいるか進んでいるデータのフォーマットを一致させ、変更します。ありがとうございました。 –

関連する問題