その文字を含むすべての名前を見つけようとしますy
。次に、このコマンドの出力を逆順に並べ替え、出力を新しいファイルに書き込もうとします。
これは私のコードです
grep -ioh '[y]' names | sort -fr | > newfile
答え1
-o
GNUオプションを使用すると、grep
ユーティリティは式に一致する部分文字列のみを返します。表情が[y]
さっきと同じですねy
。つまり、grep
文字のリストが返されますy
(そしてY
大文字と小文字を区別しない一致を使用する場合-i
)。
また、パイプの末尾に構文エラーがあります。最後の|
文字があってはいけません。代わりに、リダイレクトは次から直接行う必要があります(またはsort
オプションとオプションのパラメータで置き換える必要があります)。-o newfile
sort
ファイルの内容に言及しませんでしたので、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つです。