0

別のテキスト ファイルにあるいくつかの行を削除したい大きなテキスト ファイルがあります。これsedを行うには、Unix シェルのコマンドが適しているようです。ただし、これに使用するフラグを特定できませんでした。.

データベース.txt:

this is line 1
this is line 2
this is line 3
this is line 4
this is line 5

lines_to_remove.txt

this is line 1
this is line 3

what_i_want.txt

this is line 2
this is line 4
this is line 5
4

3 に答える 3

6

grepこれよりもはるかに適しsedています:

grep -Fxv -f lines_to_remove.txt database.txt > what_i_really_really_want.txt
于 2013-02-26T15:56:35.290 に答える
1

私はこれに使用commします:

comm -1 <(sort database.txt) <(sort lines_to_remove.txt) > what_i_want.txt

このコマンドは、ニーズにより適しています。

:<(commmand)構文はバシズムであるため、SO では非常に悪意があります。以下の略です。

sort database.txt > sorted_database.txt
sort lines_to_remove.txt > sorted_lines_to_remove.txt
comm -1 sorted_database.txt sorted_lines_to_remove.txt > what_i_want.txt
于 2013-02-26T16:16:30.373 に答える
1

awk

$ awk 'NR==FNR{a[$0];next}!($0 in a)' remove.txt database.txt
this is line 2
this is line 4
this is line 5

$ awk 'NR==FNR{a[$0];next}!($0 in a)' remove.txt database.txt > output.txt
于 2013-02-26T16:07:22.013 に答える