ホームページ  >  に質問  >  本文

linux - while read と sed の混合使用について、sed は標準入力の最初の行を読み込みます

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

リーリー

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

リーリー

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

リーリー

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

習慣沉默習慣沉默2687日前1060

全員に返信(1)返信します

  • 淡淡烟草味

    淡淡烟草味2017-06-10 09:50:43

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

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

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

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

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

    返事
    0
  • キャンセル返事