Linuxでは、sort
コマンドを実行してファイルの内容を並べ替えることができますが、私の場合は次のファイル(THANKS.txt)があります。
These people have contributed to OSN Envoy. We always try to keep this list updated and correct.
If you notice that your name is not listed here, then feel free to contact us.
Ar Rakin
Peter Williamson
David Brook
Bill Natt
このファイルには、ソフトウェアプロジェクトに貢献した人のリストが含まれています。
コマンドを使用して名前をアルファベット順にソートしたいと思います。sort
どんなアイデアがありますか?
ベストアンサー1
そしてawk
:
awk '
NR == 1, NF == 0 {
# print and skip all lines until the first blank
# one (one where the Number of Fields is 0)
print; next
}
{print | "sort"} # pass the rest to sort
' < file
最初の空白行の代わりに3行目で停止するNF == 0
ように変更します。NR == 3
awk
andを経たくない場合(そして、この単純なコマンドラインを解釈するsort
ために追加のシェルを実行したくない場合)、次のことを実行できます。awk
sort
{
sed '/[^[:blank:]]/!q'
sort
} < file
ここでuitsは、空白以外の文字()を含まsed
q
ない最初の行を探します。!
3行目をsed 3q
uitに変更します。q
入力が検索できない場合(パイプからのものなど)、対応する行sed
区切り文字の後のファイルにカーソルを保持することはできません。これはsort
、読み取った可能性がある追加データが欠落していることを意味しますsed
(たとえば、パイプから読み取った場合)。より大きな塊が入ります)。
GNU実装を使用すると、読み過ぎることを避けるために、入力を一度に1バイトずつ読み取るオプションをsed
追加できます。-u