sed変数置換に関する問題
今日sed変数の置き換えの問題を話しますこの問題は主に1つのグループの友达の質問の始まりです私もできませんでした
このように変数付きで置換すると、以下の資料を調べると簡単な方法があります.主に、私たちがsedを使うときは単一引用符を使っています.ここで変数を置換するのはbashがエスケープしていないため、二重引用符を使う必要があります.
もう1つの極端な状況は変数に/
そうすると$a変数が変換され、多くなります/そうするとどうすれば一番簡単なのはsedの区切り文字を変更して/に変更することです
これでいいのですが、この問題に基づいてずっと研究してきたのは、一つの変数に/があればどうすればいいのかということです.
実はsedは多くの記号で区切り記号を作ることができますが、sedのいくつかの正則を使用しないでください.例えば、;どちらでもいい
本文は“Dashazi's blog”のブログから出て、転載して作者と連絡してください!
root@lp:~/pwb/tmp# echo $a
9
root@lp:~/pwb/tmp# sed 's/1/$a/g'
^C
root@lp:~/pwb/tmp# echo 123|sed 's/1/$a/g'
$a23
このように変数付きで置換すると、以下の資料を調べると簡単な方法があります.主に、私たちがsedを使うときは単一引用符を使っています.ここで変数を置換するのはbashがエスケープしていないため、二重引用符を使う必要があります.
root@lp:~/pwb/tmp# echo 123|sed "s/1/$a/g"
923
root@lp:~/pwb/tmp# echo $a
9
もう1つの極端な状況は変数に/
root@lp:~/pwb/tmp# echo "123/abc/123"
123/abc/123
root@lp:~/pwb/tmp# a=3/a
root@lp:~/pwb/tmp# echo $a
3/a
root@lp:~/pwb/tmp# echo "123/abc/123"|sed "s/$a//g"
sed:-e #1, 7:“s”
そうすると$a変数が変換され、多くなります/そうするとどうすれば一番簡単なのはsedの区切り文字を変更して/に変更することです
root@lp:~/pwb/tmp# echo "123/abc/123"|sed "s#$a##g"
12bc/123
root@lp:~/pwb/tmp#
これでいいのですが、この問題に基づいてずっと研究してきたのは、一つの変数に/があればどうすればいいのかということです.
root@lp:~/pwb/tmp# echo "123/abc/123"|sed "s,$a,,g"
12bc/123
root@lp:~/pwb/tmp# echo "123/abc/123"|sed "s;$a;;g"
12bc/123
実はsedは多くの記号で区切り記号を作ることができますが、sedのいくつかの正則を使用しないでください.例えば、;どちらでもいい
本文は“Dashazi's blog”のブログから出て、転載して作者と連絡してください!