次の内容を含む crashcourse_test.txt ファイルがあります:
リーリーwhile_read.sh スクリプトの内容は次のとおりです。目的は、上記のファイルの内容を標準入力として使用し、while 読み取りループに渡し、各行の「USA」という文字列を「XXXXXXXXX」に置き換えることです。 sed コマンド経由:
リーリー出力結果は次のとおりです:
リーリー 行 1001 に文字列「USA」が含まれていることがわかります ( はたまたまファイル の最初の行です)。これは置換要件を満たしていますが、結果としてこの行は出力されません。 。
私はそれを正しく出力する方法を知っています。これは echo $line | sed 's/USA/XXXXXXXXX/'
を使用することで実現できます。
しかし、出力の最初の行だけが欠落している理由を知りたいです。標準入力として while を入力した後の最初の行はどこに行くでしょうか?
淡淡烟草味2017-06-10 09:50:43
まず第一に、sed
の使い方が間違っている可能性があります。
sed [オプション]... {他のスクリプトがない場合のみスクリプト} [入力ファイル]...
パラメータはファイルであり、変数 line
は使用されません。
リーリー
ループが 1 回だけ実行されることを意味します。つまり、ファイル リダイレクト read
の入力として使用されます。 > と input、そして read
以降のすべてを入力として使用するので、入力の最初の行は使用されません。< crashcourse_test.txt
实际上被作为read
的输入和sed
的输入,并且sed
将read