1

標準入力ファイルの読み取り、標準入力の編集、および出力の他のファイルへの書き込みに問題が発生しました。したがって、シェルは次のようなコマンドで実行されます。

./shellName < inputFile > outputFile

だから私は自分のシェルを次のように書きます:

read INPUT
tr '[:upper:]' '[:lower:]' INPUT
grep "<td>" INPUT | sed -r 's/<td>([^<]*)<\/td>/\1/g' #to search all line that contain <td> and delete <td> and <\/td>
echo $INPUT

次に、コマンド読み取りが標準入力から1行ずつ読み取られることに気付きました。コード自体は機能しませんでした。すべての大文字を小文字に変更してから、 を含む行の と </td> を削除しようとしました。私は何をすべきか?一時ファイルを作成する必要がある場合、シェルで一時ファイルを作成するにはどうすればよいですか?

4

1 に答える 1

1

実際には、あなたが思っているよりもはるかに簡単です。デフォルトでは、tr は stdin (fd 0) から読み取ります。スクリプト内のコマンドは、リダイレクトしない限り、スクリプトから標準入力を「継承」します。だから何か

#!/bin/sh
tr '[:upper:]' '[:lower:]' | sed -E 's/<td>([^<]*)<\/td>/\1/g'

プラットフォームで必要なため、-r を -E に変更しました。

于 2013-01-18T22:13:25.280 に答える