タブ区切りファイルから特定の行を削除する[閉じる]

タブ区切りファイルから特定の行を削除する[閉じる]

6つの列を持つタブ区切りのファイルがありますが、一部の行は次のように表示されません。 ここに画像の説明を入力してください。

私のファイルには7行のように、このような行がたくさんあります。私が書くとき

awk '{print $1"\t"$2"\t"$3"\t"$5"\t"$6}' filename

それはまだ保存されています。これらのアイテムを削除するにはどうすればよいですか?助けてください。

ベストアンサー1

試みの問題は、入力ファイルの各行の最初の6列のみが標準出力として印刷されることです。指定された行に列数が少ない場合、欠落している列awkは「空」と解釈されるため、行7の出力は実際には次のようになります。

chr1 \t 290338 \t 290378 \t NS500455:80:HG7TMBGXB:$:13404:14651:1128 \t + \t \n

(読みやすくするために周囲のスペースを追加しました\t。最後に「空の」列があることに注意してください)。

列数に基づいて誤った行をフィルタリングするには、次を試してください。

awk -F'\t' -v OFS='\t' 'NF==6' file.txt > output.txt

6つのフィールド(=列)を持つ行のみが印刷されます。

おすすめ記事