sort
私はテキストファイルから重複した行を削除し、アルファベット順に並べ替えました。ファイルの上書き({,}
コマンドから):
sort -u -o $HOME/Documents/notes/URLs.txt{,}
後でミックスに別のファイルを追加するにはどうすればよいですかURLs.txt
?説明するために、他の3つを試してみましょう。
$HOME/Documents/notes/{URLs.txt,Android.txt,mpv.txt,firefox.txt}
答え1
sort
すべての入力をソートします。したがって、複数のファイルパラメータを提供するたびに、sort
そのパラメータの接続をソートします。ファイルを個別にソートして各ファイルを出力として書き換えるには、別々のコマンドを呼び出す必要があります。
for f in URLs.txt Android.txt mpv.txt firefox.txt
do
sort -u -o "$HOME/Documents/notes/$f"{,}
done
これ:
sort -u -o newfile "$HOME"/Documents/notes/*.txt
すべての入力ファイルの接続を新しいファイルにソートします。
答え2
では、zsh
次の操作を行います。
for f (~/Documents/notes/(URLs|Android|mpv|firefox).txt(N)) sort -uo $f $f
(またはsort -uo $f{,}
ゴルフをしたい場合)。
これに対応する内容はbash
次のとおりです。
(shopt -s extglob nullglob
for f in ~/Documents/notes/@(URLs|Android|mpv|firefox).txt; do
sort -uo "$f" "$f"
done
)
中かっこ拡張の代わりにワイルドカードを使用して実際に存在する場合URLs.txt
にのみ処理します。firefox.txt
を使用すると、これらのファイルが次の条件を満たす場合にのみ処理されるようにglob修飾子をzsh
追加できます。.
定期的な文書。を使用すると、ループを追加して非正規ファイルをスキップbash
できます。[[ -f $f && ! -L $f ]] || continue