「行のすべての列が$ VAR1または$ VAR2の場合にのみ、行全体を削除してください」という質問に似ています。
ただし、列全体を削除し、列の各行構成に基づいています。
列と行番号が常に変更されるテキストファイルがあり、その列の各行が$ VAR1または$ VAR2と等しい場合にのみ、txtファイルからすべての列を削除します。たとえば、
$VAR1="X" と $VAR2="N" と仮定すると、$VAR1 と $VAR2 が列全体を構成するすべての列を削除したいと思います。
これが私の入力になります:
hajn 32 ahnnd namm X 543 asfn F
namd 90 jsnfu namm X 098 asfn S
5739 dw 32eff Sfff N asd 3123 1
これが私が望む結果です。
hajn 32 ahnnd namm 543 asfn F
namd 90 jsnfu namm 098 asfn S
5739 dw 32eff Sfff asd 3123 1
ループを使用してこの問題を解決できますが、これを行う強力な一行方法があるかどうかを知りたいです。可能な限りawkを使用することをお勧めします。
ベストアンサー1
これを見てください。
$ cat data
hajn 32 ahnnd namm X 543 asfn F
namd 90 jsnfu namm X 098 asfn S
5739 dw 32eff Sfff N asd 3123 1
if式および/または式と一緒にawkを使用し||
、その場合はcloumn#5を除いて残りのデータを印刷します。
$ awk '{ if ($5=="X" || $5=="N") { $5=""; print } }' < data
hajn 32 ahnnd namm 543 asfn F
namd 90 jsnfu namm 098 asfn S
5739 dw 32eff Sfff asd 3123 1