のための入力を生成しないが、私は含むFILE1を持って言う:どのようにシェルがawkを
1,2,3,4
私はこのような、そのファイルを処理するためのawkを使用することができます。
awk -v FS="," '{print $1}' file1
また、私は、私は標準入力から読み込みを意味し、ここでは文字列でのawkを呼び出すことができます。
awk -v FS="," '{print $1}' <<<"9,10,11,12"
コマンド1を予想通りの結果に1
とコマンド2
利回り9を生成します。私はsequentallyのawkで両方のファイルを解析する場合
4,5
:
awk -v FS="," '{print $1}' file1 file2
は私が手:
1
4
予想通り
は今、私は2番目FILE2を持っていると言います。
しかし、私は、ファイルからの読み込みとを標準入力からの読み込みを混合していた場合、私は標準入力から読んでいる内容は無視されますし、ファイル内のコンテンツのみを処理します順:
awk -v FS="," '{print $1}' file1 file2 <<<"9,10,11,12"
awk -v FS="," '{print $1}' file1 <<<"9,10,11,12" file2
awk -v FS="," '{print $1}' <<<"9,10,11,12" file1 file2
すべての3つのコマンドは次のようになります。
1
4
つまり、stdinの内容は単に破棄されます。シェルは何をしていますか?
興味深いことに私は、コマンド3を変更した場合:
awk -v FS="," '{print $1}' <<<"9,10,11,12",file1,file2
私は単にファイル1/2として、理にかなって9
を取得するには、標準入力からわずか2つのフィールドです。しかし、なぜ、その後も結果9
をもたらすであろう
awk -v FS="," '{print $1}' <<<"9,10,11,12 file1 file2"
に
awk -v FS="," '{print $1}' <<<"9,10,11,12" file1 file2
展開されていませんか?
なぜ、stdinのコンテンツは無視されますか?コマンド1と2で同じ問題が発生します。シェルはここで何をしていますか?
私が上でコマンドを試してみた:バージョン4.2.53(1)、GNUのbashはファイルから
何をしようとしていますか?あなたは自分の質問をして答えています! – NinjaGaiden
**一般的な質問は**です: シェルはどのようにawkの入力を生成しますか? **特定の部分が**さ: しかし、なぜ が続いている のawk -v FS = "" '{$ 1印刷}' <<< "9,10,11,12" はFILE1 FILE2 展開されていません〜 awk -v FS = "、" '{print $ 1}' <<< "9,10,11,12 file1 file2" 結果9も得られますか? – FloHe
'(少なくとも)' 'ksh'コマンドライン処理は' '<< str」の入力を '' -''を使ってstd-inから '' read-from-std-in ' awk '{print $ 1}' file1 - <<< "str" file2'。私はこれが他のシェルでも動作すると期待しています。がんばろう。 – shellter