![タブ区切りファイルから特定の行を削除する[閉じる]](https://linux33.com/image/177653/%E3%82%BF%E3%83%96%E5%8C%BA%E5%88%87%E3%82%8A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8B%E3%82%89%E7%89%B9%E5%AE%9A%E3%81%AE%E8%A1%8C%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
答え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つのフィールド(=列)を持つ行のみが印刷されます。