Kus*_*nda 54
它是替代sed
( s
) 命令的替代分隔符。通常,使用斜杠,如s/pattern/replacement/
,但sed
允许使用几乎任何字符。
用于使用另一个分隔符比主要原因/
在sed
替换表达式是当表达式将在文字作用/
字符。
例如,/some/path/here
要用替换路径/other/path/now
,可以这样做
s/\/some\/path\/here/\/other\/path\/now/
Run Code Online (Sandbox Code Playgroud)
这患有通常所说的“倾斜牙签综合症”,这意味着它很难阅读和正确维护。
相反,我们可以使用另一个表达式分隔符:
s/\/some\/path\/here/\/other\/path\/now/
Run Code Online (Sandbox Code Playgroud)
使用~
只是有效替换表达式分隔符的另一个示例。
你的表情
s~ ~~g
Run Code Online (Sandbox Code Playgroud)
是相同的
s/ //g
Run Code Online (Sandbox Code Playgroud)
并将删除输入中的所有空格。在这种情况下,/
根本不需要使用另一个分隔符,因为模式和替换都不包含/
.
做同样事情的另一种方式是
tr -d ' ' <infile >outfile
Run Code Online (Sandbox Code Playgroud)
man*_*tor 18
这是一个替换分隔符。最常用的分隔符是正斜杠/
。但是sed
可以使用任何字符作为分隔符 - 它会自动使用后面的字符s
作为分隔符:
sed 's@ @@g'
sed 's+ ++g'
sed 's\ \\g'
sed 's* **g'
Run Code Online (Sandbox Code Playgroud)
也可以使用空格作为分隔符:
echo "foo" | sed 's foo bar g'
Run Code Online (Sandbox Code Playgroud)
/
当您的命令中有很多斜杠时,最常使用的其他定界符变得令人困惑。考虑一下我们想要将多个空格转换为一个空格字符的情况:而不是
echo " a b c " | sed 's/\s\{1,\}/ /g'
Run Code Online (Sandbox Code Playgroud)
你可以跑
echo " a b c " | sed 's~\s\{1,\}~ ~g'
Run Code Online (Sandbox Code Playgroud)
这更清楚。
归档时间: |
|
查看次数: |
8031 次 |
最近记录: |