重複したone.txtという2つのtxtファイルがあります。
yesterday
yesterday
today
today
tomorrow
tomorrow
2番目のtxtはtwo.txtと呼ばれ、重複した内容が含まれています。
mike
mike
paul
paul
tomorrow
tomorrow
このコマンドを使用すると、sort -u one.txt > total.txt
出力ファイルを取得できます。
today
tomorrow
yesterday
したがって、次のようにsort -u two.txt >> total.txt
して、同じ出力ファイルに2番目のファイルを追加しました。
today
tomorrow
yesterday
mike
paul
tomorrow
「明日」という言葉を2回使った。それを避ける方法?
sed 's/[[:space:]]+$//' one.txt two.txt | sort -u total.txt
解決策のように見えますが、次のような別の単語のリストを追加しようとするたびに問題が発生します。
sed 's/[[:space:]]+$//' three.txt | sort -u total.txt
ベストアンサー1
total.txt
ソートされた順序(mike
およびで始まる)に移動するには、paul
次のいずれかを実行できます。
sort -u one.txt two.txt > total.txt
またはsort -u total.txt two.txt -o total.txt
順序を維持する必要がある場合(one.txt
最初にコンテンツをソートしてからコンテンツをソートする)two.txt
とは別に)one.txt
次に実行
sort -u two.txt | awk '!seen[$0]++' total.txt - > temp.txt; mv temp.txt total.txt
これは次のとおりです。
(cat total.txt; sort -u two.txt) | awk '!seen[$0]++' > temp.txt; mv temp.txt total.txt
つまり、取得したコンテンツtotal.txt
(既に並べ替えと重複排除済み)と並べ替えられ、重複排除されたコンテンツが後で配信されますtwo.txt
。以前に録音された
awk
ソートされていないファイルを重複排除するコマンド。