Yanor.net/
Wiki
Blog
GitHub
Sandbox
開始行:
* sedでバックスラッシュを置換する際の注意点 [#p722a5ad]
** シェル展開の挙動について [#i07614b8]
正規表現を'(シングルクォート)でくくる場合、置換文字列「...
> echo "[/]" | sed -e 's/\//\\/'
[\]
正規表現を"(ダブルクォート)でくくる場合、置換文字列「\...
なお、「\\\」をシェル展開しても「\\」になる。「\\...
> echo "[/]" | sed -e "s/\//\\\\/"
[\]
** 正規表現にシェル変数を使うには? [#b5687b51]
正規表現に与える文字列では「\」をエスケープしなければな...
Perlで言えば以下のようにすることで、「/tmp/passwd 」と表...
$etc_passwd = "/etc/passwd";
$etc_passwd =~ s#/etc#/tmp#;
print $etc_passwd;
まず「/etc」を「\/etc」とする。
etc="/etc"
escaped_etc=`echo $etc | sed -e 's/\//\\\\\//...
echo $escaped_etc
「\\\\\/」は前半4文字と後半2文字で分けて考える。
まず前半4文字「\\\\\」を考える。最初にバッククォート...
次に後半2文字「\/」を考える。最初にバッククォートによる...
etc_passwd="/etc/passwd"
tmp_passwd=`echo "$etc_passwd" | sed -e "s/^$escaped_et...
echo $tmp_passwd
続き、実際にetcをtmpに置換するsedを考える。~
$escaped_etcにはエスケープされた「\/etc」が入っている。...
また、「\/tmp/」もバッククォートによるシェル展開で「/...
以上で、「/etc/passwd」が「/tmp/passwd」に置換された...
#!/bin/sh
etc="/etc"
escaped_etc=`echo $etc | sed -e 's/\//\\\\\//g'`
etc_passwd="/etc/passwd"
tmp_passwd=`echo "$etc_passwd" | sed -e "s/^$escaped_etc...
echo $tmp_passwd
** 本当は、 [#dcd5956e]
$ echo '1/2/3' | sed -e s'#/#,#g'
1,2,3
これでいいんだけど。
終了行:
* sedでバックスラッシュを置換する際の注意点 [#p722a5ad]
** シェル展開の挙動について [#i07614b8]
正規表現を'(シングルクォート)でくくる場合、置換文字列「...
> echo "[/]" | sed -e 's/\//\\/'
[\]
正規表現を"(ダブルクォート)でくくる場合、置換文字列「\...
なお、「\\\」をシェル展開しても「\\」になる。「\\...
> echo "[/]" | sed -e "s/\//\\\\/"
[\]
** 正規表現にシェル変数を使うには? [#b5687b51]
正規表現に与える文字列では「\」をエスケープしなければな...
Perlで言えば以下のようにすることで、「/tmp/passwd 」と表...
$etc_passwd = "/etc/passwd";
$etc_passwd =~ s#/etc#/tmp#;
print $etc_passwd;
まず「/etc」を「\/etc」とする。
etc="/etc"
escaped_etc=`echo $etc | sed -e 's/\//\\\\\//...
echo $escaped_etc
「\\\\\/」は前半4文字と後半2文字で分けて考える。
まず前半4文字「\\\\\」を考える。最初にバッククォート...
次に後半2文字「\/」を考える。最初にバッククォートによる...
etc_passwd="/etc/passwd"
tmp_passwd=`echo "$etc_passwd" | sed -e "s/^$escaped_et...
echo $tmp_passwd
続き、実際にetcをtmpに置換するsedを考える。~
$escaped_etcにはエスケープされた「\/etc」が入っている。...
また、「\/tmp/」もバッククォートによるシェル展開で「/...
以上で、「/etc/passwd」が「/tmp/passwd」に置換された...
#!/bin/sh
etc="/etc"
escaped_etc=`echo $etc | sed -e 's/\//\\\\\//g'`
etc_passwd="/etc/passwd"
tmp_passwd=`echo "$etc_passwd" | sed -e "s/^$escaped_etc...
echo $tmp_passwd
** 本当は、 [#dcd5956e]
$ echo '1/2/3' | sed -e s'#/#,#g'
1,2,3
これでいいんだけど。
ページ名: