Bashでファイル内の文字列を置き換える方法

How Replace String File Bash



プログラマーは、データを一時的または永続的に保存するために、さまざまなタイプのファイルを操作する必要がある場合があります。場合によっては、ファイルの一部を置き換えたり、ファイルの特定のコンテンツを変更したりする必要があります。ファイル内のコンテンツを置き換えるには、特定のファイル文字列を検索する必要があります。 NS しかし コマンドは、bashスクリプトを使用してファイル内の文字列を置き換えるために使用されます。このコマンドは、bash内のファイルの内容を置き換えるためにさまざまな方法で使用できます。 NS 「awk ’コマンドを使用して、ファイル内の文字列を置き換えることもできます。このチュートリアルでは、bashスクリプトを使用してファイルの文字列値を置き換える方法を説明します。 Sales.txt 置換操作を示すために、次のコンテンツが作成されます。

Sales.txt







日付金額エリア

2020年1月1日60000ダッカ
2020年10月2日76000ラジシャヒ
2020年3月21日54000クルナ
2020年4月15日78000チャンドプール
2020年5月17日45000ボグラ
2020年2月6日67000コミラ

ファイル内の文字列を `sed`コマンドに置き換えます

`の基本的な構文 sed ファイル内の特定の文字列を置き換えるための `コマンドを以下に示します。



構文



sed -私 's / search_string / replace_string /'ファイル名

上記の構文のすべての部分を以下に説明します。





'-私' このオプションは、検索文字列がファイルに存在する場合に、元のファイルの内容を置換文字列で変更するために使用されます。

'NS' 代替コマンドを示します。



'検索文字列' 置換のためにファイルで検索される文字列値が含まれます。

‘replace_string’ に一致するファイルのコンテンツを置き換えるために使用される文字列値が含まれています '検索文字列' 価値。

'ファイル名' 検索と置換が適用されるファイル名が含まれます。

例1:ファイルを「sed」コマンドに置き換える

次のスクリプトでは、検索と置換のテキストがユーザーから取得されます。検索文字列が「Sales.txt」に存在する場合、それは置換文字列に置き換えられます。ここでは、大文字と小文字を区別する検索が実行されます。

#!/ bin / bash

#ファイル名を割り当てる
ファイル名='Sales.txt'

#検索文字列を取得します
読んだ -NS '検索文字列を入力してください:'探す

#置換文字列を取得します
読んだ -NS '置換文字列を入力してください:'交換

もしも [[ $ search ='' && $ replace ='' ]];それから
sed -私 'NS/$ search/$ replace/ ' $ filename
なれ

出力

例2:ファイルを「sed」コマンドで「g」および「i」フラグに置き換える

次のスクリプトは前の例と同じように機能しますが、検索文字列で「g」フラグがグローバルに検索され、大文字と小文字を区別しない検索で「i」フラグが検索されます。

#!/ bin / bash

#検索文字列を取得します
読んだ -NS '検索文字列を入力してください:'探す

#置換文字列を取得します
読んだ -NS '置換文字列を入力してください:'交換

もしも [[ $ search ='' && $ replace ='' ]];それから
sed -私 'NS/$ search/$ replace/与える' $ 1
なれ

出力

例3:ファイルを「sed」コマンドと一致する数字パターンに置き換える

次のスクリプトは、ファイル内のすべての数値コンテンツを検索し、コンテンツを追加してコンテンツを置き換えます。 ‘$’ 数字の先頭にある記号。

#!/ bin / bash

#コマンドライン引数の値が存在するかどうかを確認します
もしも [ $ 1 ='' ];それから
#数字を含むすべての文字列を検索し、$を追加します
sed -私 's / b [0-9] {5 } b / $&/ g' $ 1
なれ

出力

ファイル内の文字列を `awk`コマンドに置き換えます

NS ' awk ’ コマンドはファイル内の文字列を置き換える別の方法ですが、このコマンドは「」のように元のファイルを直接更新することはできません。 しかし 指図。

例4:ファイルを「awk」コマンドに置き換える

次のスクリプトは、更新されたコンテンツをに保存します temp.txt 元のファイルによって名前が変更されるファイル。

#!/ bin / bash

#コマンドライン引数の値が存在するかどうかを確認します
もしも [ $ 1 ='' ];それから
#日付に基づいてすべての文字列を検索
awk '{sub('02 / 06/2020'、 '12/06/2020')} 1 ' $ 1 >>temp.txt&& mvtemp.txt$ 1
なれ

出力

結論

この記事では、bashスクリプトを使用してファイル内の特定の文字列を置き換える方法を説明しました。上記の例を実行すると、ファイル内の文字列を置き換えるタスクが簡単になります。