スクリプトを使用してテキストファイルの内容に複数のプロセスを適用し、変更した内容を新しいtxtファイルに保存するにはどうすればよいですか?

スクリプトを使用してテキストファイルの内容に複数のプロセスを適用し、変更した内容を新しいtxtファイルに保存するにはどうすればよいですか?

bashスクリプトとコマンドラインツールを使用して次の機能を実装します。作成したスクリプトは次のように実行する必要があります。そのディレクトリの* .txtファイルを処理する必要があります。この処理は次の手順で構成されます。すべての小文字で作成します。2.すべてのxml / htmlタグを削除します。3.テキストファイル内のすべての略語を置き換えます。

ここに画像の説明を入力してください。

図のようにコードを書きました。私は実際にLinuxに初めて触れたので、これを行うには別のコマンドを検索する必要がありました。ただし、ジョブの要件に応じて、出力は端末から各ジョブを個別に印刷するのではなく、実際に別のファイルを作成し、変更された内容(4つのプロセスを適用した後)をその新しいファイルに書き込む必要があります。

パスワード:

#1. Converts all text inside file 1.txt to lowercase
tr '[A-Z]' '[a-z]' < 1.txt
#2. Removes html/xml tags from the text
sed -e 's/<['^]>'*>//g' 1.txt
#3 Replaces all acronyms with full names
sed 's/doc/document/' 1.txt
#4 Converts all numbers to full words
sed 's/2/two/' 1.txt

ファイルテキスト:任意の文書です。その文書は2つあります。 <b>気にしない</b>

期待される出力:これは任意の文書です。そのような文書は2つあります。私は気にしません。

ありがとうございます!

ベストアンサー1

問題は、あなたのコマンドのどれもファイルを変更しないことです。それらはすべて標準出力に書き込みます(つまり、端末ウィンドウに結果を表示します)。一般的に私は2つの方法を考えています。

  1. ファイルをコピーし、オプションフラグを使用してコマンドがコピーされたファイルをその場で変更するようにします。

  2. パイプと出力リダイレクトを使用してすべての操作を適用し、結果を新しいファイルに書き込みます。

最初のアプローチの1つの問題は、すべてのコマンドラインプログラムが内部ファイルの変更をサポートしていないことです。この場合、sedファイルをその場で編集するオプションがあります。-iオプションフラグを使用して、sedファイルをその場所で編集するように指示します。このtrプログラムは内部編集をサポートしていませんが、trコマンドをコマンドに簡単に置き換えることができますsed。これにより、次のようなスクリプトが生成される可能性があります(少し変更されました)。

#0. Create a copy of the file
cp -i 1.txt 2.txt

#1. Converts all text inside file 2.txt to lowercase
sed -i -e 's/\(.*\)/\L\1/' 2.txt

#2. Removes html/xml tags from the text
sed -i -e 's/<['^]>'*>//g' 2.txt

#3 Replaces all acronyms with full names
sed -i -e 's/doc/document/' 2.txt

#4 Converts all numbers to full words
sed -i -e 's/2/two/' 2.txt

パイプとリダイレクトを使用したい場合は、次の選択肢があります。

cat 1.txt \
| sed -e 's/\(.*\)/\L\1/' \
| sed -e 's/<['^]>'*>//g' \
| sed -e 's/doc/document/' \
sed -e 's/2/two/' \
> 2.txt

これはあなたの課題に対する解決策ではありません。変更がファイルに書き込まれる方法に関する問題のみを解決します。

おすすめ記事