sed コマンドは、ファイル内の指定された文字列を置き換えます。

目次

1.txtファイルを作成する

2. 各行の最初の huawei を apple に置き換えます。3 番目の「/」の後は、パラメーターが追加されていない場合、最初の huawei のみが置き換えられます。

3. 各行のすべての xiaomi を iphone に置き換えます。3 番目の「/」の後に、パラメーター g を追加してすべてを置き換えます

4. 各行の 2 番目の redmi を Potato に置き換えます。3 番目の「/」の後に、パラメーター 2 を追加して 2 番目の Redmi を置き換えます。

 5. 各行の 2 番目のメイトを最後のメイトに置き換えます。3 番目の「/」の後に、パラメーター 2g を追加して、最後から 2 番目のメイトを置き換えます。

6. 各行の最初の 2 つの KFC を CPU に置き換えます。

7. 2 行目の最初の HBW を MDL に置き換えます。

 8. 2行目から最終行までのHBWをMDLに置き換えます(記号$は最終行、数字を書く場合は数行を意味します)

9. 最初の行の先頭に Chicken を追加します (記号 ^ は行の先頭を表します)。

 10. 最初の行の最後に beautiful を追加します ($ 記号は行の終わりを表します)

11.各行の先頭にchickを追加し、同時にバックアップファイルを作成します(chickenに書き込まれていないバックアップファイル)

 12. セミコロンで区切ることにより、複数の置換アクションを一緒に実行できます。

13、置換する文字列に一重引用符 ' が含まれている場合は、二重引用符を使用してパラメータを囲みます。

 14. スラッシュ/自体は sed ステートメントの区切り文字として使用されますが、置換される文字列にもスラッシュ/が含まれている場合は、シャープ記号 # を区切り文字として使用できます (疑問符も使用できます)。


1.txtファイルを作成する

vi huawei.txt

2. 各行の最初の huawei を apple に置き換えます。3 番目の「/」の後は、パラメーターが追加されていない場合、最初の huawei のみが置き換えられます。

sed -i "s/huawei/apple/" huawei.txt

 

効果を実感してください:

 

3. 各行のすべての xiaomi を iphone に置き換えます。3 番目の「/」の後に、パラメーター g を追加してすべてを置き換えます

sed -i "s/xiaomi/iphone/g" huawei.txt

 

効果を実感してください:

 

4. 各行の 2 番目の redmi を Potato に置き換えます。3 番目の「/」の後に、パラメーター 2 を追加して 2 番目の Redmi を置き換えます。

sed -i "s/redmi/potato/2"

 

 5. 各行の 2 番目のメイトを最後のメイトに置き換えます。3 番目の「/」の後に、パラメーター 2g を追加して、最後から 2 番目のメイトを置き換えます。

sed -i "s/mate/pico/2g" 

 

6. 各行の最初の 2 つの KFC を CPU に置き換えます。

sed -i "s/KFC/CPU/"

sed -i "s/KFC/CPU/"

 

最初の文字列を最初に置き換えます。このとき、元の 2 番目の文字列が順番で 1 番目になりますので、もう一度置き換えます。

(上記の操作の範囲は行ごとです。次に、変更が必要な特定の行または行数を正確にフィルターします。デモンストレーションの便宜上、特定の行の最初の文字列のみを変更します。 、「g」を追加しない)

7. 2 行目の最初の HBW を MDL に置き換えます。

sed -i "2s/HBW/MDL/" HBW.txt 

 8. 2行目から最終行までのHBWをMDLに置き換えます(記号$は最終行、数字を書く場合は数行を意味します)

sed -i '2,$s/HBW/MDL/' HBW.txt 

ステートメント内でコンマ「,」を使用する場合は、ステートメントの外側で一重引用符を使用する必要があることに注意してください。

(上記はすべて特定の文字列自体の置換であり、その後、行の先頭または末尾を変更します)。

9. 最初の行の先頭に Chicken を追加します (記号 ^ は行の先頭を表します)。

sed -i '1s/^/chicken/' ktv.txt

 

 10. 最初の行の最後に beautiful を追加します ($ 記号は行の終わりを表します)

sed -i '1s/$/美しい/' ktv.txt 

 

(sed -i コマンドを使用してファイルを直接変更した後、後悔した場合はどうすればよいでしょうか?パラメータ -i.bak を追加すると、変更中にバックアップが作成されます)

11.各行の先頭にchickを追加し、同時にバックアップファイルを作成します(chickenに書き込まれていないバックアップファイル)

sed -i.bak 's/^/chicken/' aaa.txt 

 

 12. セミコロンで区切ることにより、複数の置換アクションを一緒に実行できます。

同時に、すべての行の先頭にtopを追加し、すべての行の末尾にbottomを追加します(-iパラメータは呼び出されず、変更結果はファイルに書き込まれないことに注意してください)

sed 's/^/top/;s/$/bottom/' aaa.txt

13、置換する文字列に一重引用符 ' が含まれている場合は、二重引用符を使用してパラメータを囲みます。

 各行の n'a を na に置き換えます (-i パラメーターは便宜上使用されず、変更結果はファイルに書き込まれないことに注意してください)

sed "s/n'a/na/" aaa.txt

 14. スラッシュ/自体は sed ステートメントの区切り文字として使用されますが、置換される文字列にもスラッシュ/が含まれている場合は、シャープ記号 # を区切り文字として使用できます (疑問符も使用できます)。

n/a を na に置き換えます (パラメーター -i は呼び出されず、変更結果はファイルに書き込まれません)

sed "s#n/a#na#" aaa.txt

sed「s?n/a?na?」ああ.txt

理解: sed の便利な点は、ドキュメントのコンテンツ内の特定のキーワード (文字列がわかっている) をすばやく見つけて編集できることですが、sed を直接使用して未知の文字列を解決するのは困難です。たとえば、パスワードブックですべてのパスワードを置き換えたいのですが、それらはすべてランダムな文字列であり、ファイルの内容が「パスワード: 12345678; パスワード: 22345678;...」である場合、「パスワード」しか見つけることができません。 :" と "; "、修正されていない "12345678" を引き続き置き換える方法はまだ検討する必要があります。

おすすめ

転載: blog.csdn.net/LiZhen314/article/details/131104197
おすすめ