Linux:コマンドの組み合わせ

Linux:コマンドの組み合わせ

その文字を含むすべての名前を見つけようとしますy。次に、このコマンドの出力を逆順に並べ替え、出力を新しいファイルに書き込もうとします。

これは私のコードです

grep -ioh '[y]' names | sort -fr | > newfile

答え1

-oGNUオプションを使用すると、grepユーティリティは式に一致する部分文字列のみを返します。表情が[y]さっきと同じですねy。つまり、grep文字のリストが返されますy(そしてY大文字と小文字を区別しない一致を使用する場合-i)。

また、パイプの末尾に構文エラーがあります。最後の|文字があってはいけません。代わりに、リダイレクトは次から直接行う必要があります(またはsortオプションとオプションのパラメータで置き換える必要があります)。-o newfilesort

ファイルの内容に言及しませんでしたので、names次の内容を申し上げます。考える1行に1つずつ名前を含むファイル。

その文字を含むすべての行を取得するにはy(大文字と小文字を無視する)、次を使用できます。

grep '[yY]' names

または

grep -i 'y' names

その後、大文字と小文字を無視して逆順に並べ替えることができます(とにかくほとんどの名前は大文字で始まると思いますが)sort -f -r

grep '[yY]' names | sort -f -r -o newfile

または

grep '[yY]' names | sort -f -r >newfile

これに特別なこの場合、コマンドの順序は重要ではありません。

sort -f -r names | grep '[yY]' >newfile

次のように書くこともできます。

( sort -f -r | grep '[yY]' ) <names >newfile

または

<names ( grep '[yY]' | sort -f -r ) >newfile

あるいは、同じトピックに関する他の多くのバリエーションの1つです。

関連情報