linux - while read と sed の混合使用について、sed は標準入力の最初の行を読み込みます
習慣沉默
習慣沉默 2017-06-10 09:48:43
0
1
1111

次の内容を含む crashcourse_test.txt ファイルがあります:

リーリー

while_read.sh スクリプトの内容は次のとおりです。目的は、上記のファイルの内容を標準入力として使用し、while 読み取りループに渡し、各行の「USA」という文字列を「XXXXXXXXX」に置き換えることです。 sed コマンド経由:

リーリー

出力結果は次のとおりです:

リーリー

行 1001 に文字列「USA」が含まれていることがわかります ( はたまたまファイル の最初の行です)。これは置換要件を満たしていますが、結果としてこの行は出力されません。 。
私はそれを正しく出力する方法を知っています。これは echo $line | sed 's/USA/XXXXXXXXX/' を使用することで実現できます。
しかし、出力の最初の行だけが欠落している理由を知りたいです。標準入力として while を入力した後の最初の行はどこに行くでしょうか?

習慣沉默
習慣沉默

全員に返信(1)
淡淡烟草味

まず第一に、sedの使い方が間違っている可能性があります。

sed [オプション]... {他のスクリプトがない場合のみスクリプト} [入力ファイル]...

パラメータはファイルであり、変数 line は使用されません。 リーリー

3 のみが出力されるということは、

ループが 1 回だけ実行されることを意味します。つまり、ファイル リダイレクト が実際には read の入力として使用されます。 > と input、そして read 以降のすべてを入力として使用するので、入力の最初の行は使用されません。< crashcourse_test.txt实际上被作为read的输入和sed的输入,并且sedread

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート