テキスト入力を処理して期待される出力を表示するシェルスクリプトを作成しましたが、期待される結果を表示するように投稿しctrl+c
ました。それが完了するまで、カーソルが$ _スペースに移動するまで待機します。これctrl+c
をシェルスクリプト自体に含めるにはどうすればよいですか?または、ctrl+c
bash / shellコマンドを使用して実行するシェルスクリプトは何ですか?
スクリプトは次のとおりです。
sed 's/\xC2\xA0//g' | awk '$1=="|"{if(f){print f" "$2;f=""}else{f=$2}}' filename.txt
filename.txtに含まれるもの:https://justpaste.it/edit/30310895/df1838c844c0fcd1
あなたが示すパイプラインは本質的に
sed expression | awk expression filename
これはawk
ファイル上で実行され、標準入力でユーザーからの入力を待っているfilename
間sed
は何もしません(その時点で端末に入力した内容を読み取ります)。
このスクリプトを終了するには、を押しCtrl+Dてsed
プロセスへの入力の終了を通知するだけです。これsed
以上読み取るものがないことに気付くと、スクリプトは終了し、スクリプトは終了します(それが「一時停止」していたため)。
現在のスクリプトは、多かれ少なかれ実行と同等です
awk expression filename
sed expression
... 2つのコマンドがパイプを介して相互に通信していないため。
あなたがしたいことは
sed expression filename | awk expression
ここでsed
は、がファイルを操作しており、結果をに送信しawk
てさらに処理します。awk
ファイル名なしで開始されsed
ます。つまり、パイプを介しての標準出力に接続されている標準入力から読み取ります。
あなたの場合、あなたはしたい
sed 's/\xC2\xA0//g' filename.txt | awk '$1=="|"{if(f){print f" "$2;f=""}else{f=$2}}'
(そのパイプラインがあなたが望むことをするかどうかはわかりませんが、少なくともsed
とawk
プロセスは正しくパイプされます)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加