私はコマンドラインをよりよく学びようとしていますが、これら2つのコマンドの違いが何であるかを知りたいです。
grep -c ^b example
そして
grep ^b example| cat –n
答え1
さて、手動で、grep
:
探す模様すべて文書。デフォルトでは、一致
grep
する行が印刷されます。
そして-c
フラグを使うと:
-c, --count
通常の出力を抑制します。代わりに、各入力ファイルに対して一致する行数を印刷します。
したがって、grep -c ^b example
印刷数字(カウント) パターンに一致する行を計算し、grep ^b example
行自体を印刷します。
に関してはcat
、それは次のように説明されています。
ファイルをリンクして標準出力として印刷
この-n
フラグの機能は次のとおりです。
-n, --number
すべての出力ラインに番号を付けます。
パイプが存在し、ファイル名がない場合はcat
パイプから読み取られるため、grep
出力は行番号が追加された出力です。したがって、grep ^b example| cat –n
一致するすべての行が印刷され、番号が付けられます。
これは、一致する行番号が追加されるのgrep -n ^b example
とは異なります。出力だけを見て、それに応じて行番号を付けながら、元のファイルの行番号を調べます。grep
grep
cat
grep
したがって、入力ファイルが与えられた場合
$ cat example
bar
foo
basf
私たちは:
$ grep -c ^b example
2
$ grep ^b example |cat -n
1 bar
2 basf
$ grep -n ^b example
1:bar
3:basf
答え2
良いコマンド:
grep -c ^b example
:文字で始まる行に一致する行数を出力しb
、grep ^b example | cat -n
:grep コマンドの結果を cat コマンドに渡し、対応する行番号をリストします。力の行番号と一緒に-n
リストします。cat
例:
example.txt コンテンツ:
media sound3
media sound1
media sound2
find sound -type f -name sound[0-9] -printf 'media %f\n' > file.txt
find sound -type f -name sound[0-9] -exec bash -c 'echo media bash >> file.txt' {} \;
find sound -type f -name sound[0-9] -exec bash -c "f='{}'; echo media $( basename ${f}) >> file.txt" \;
(1)の結果:
3
(2)の結果:
1 media sound3
2 media sound1
3 media sound2