A
テキストファイルから削除したい行番号を含むテキストファイルがありますB
。たとえば、ファイルにはA.txt
次の行が含まれています。
1
4
5
ファイルB.txt
には次の行が含まれています。
A
B
C
D
E
生成されたファイルは次のようになります。
B
C
もちろん手動で行うこともできますが、
sed '1d;4d;5d' B.txt
しかし、行番号を手動で指定せずにこれを行う方法を知りたいです。
ベストアンサー1
awk
以下も使用できます。
awk 'NR==FNR { nums[$0]; next } !(FNR in nums)' linenum infile
特別な場合に「linenum」ファイルが空の場合、awkはそれをスキップするため、「infile」行全体を印刷しません。この問題を解決するには、次のコマンドを使用します。
awk 'NR==FNR && FILENAME==ARGV[1]{ nums[$0]; next } !(FNR in nums)' linenum infile
またはより良い(ありがとうスティーブン・チャジェラス):
awk '!firstfile_proceed { nums[$0]; next }
!(FNR in nums)' linenum firstfile_proceed=1 infile