我已经看到其他答案试图解决我的问题,但我无法解决。
#!/bin/bash
s=org.gnome.Terminal.Legacy.Keybindings
g=$(echo $s | sed "s|\.|/|g")
echo $g
Run Code Online (Sandbox Code Playgroud)
我有上面的脚本返回
org/gnome/Terminal/Legacy/Keybindings
Run Code Online (Sandbox Code Playgroud)
但我需要/
在此末尾附加,以便它变成
org/gnome/Terminal/Legacy/Keybindings/
Run Code Online (Sandbox Code Playgroud)
如何为此扩展我的 sed 脚本?
如果您使用的是 bash,那么您实际上并不需要 sed。
s="org.gnome.Terminal.Legacy.Keybindings"
g=${s//.//}/
Run Code Online (Sandbox Code Playgroud)
阅读bash 手册页 ( )的参数扩展部分${parameter/pattern/string}
,它还有许多其他有用的东西。
使用sed,还可以指定多个表达式,有时可读性更好。
s="org.gnome.Terminal.Legacy.Keybindings"
g=$(sed -e 'y,.,/,' -e 's,$,/,' <<<$s)
Run Code Online (Sandbox Code Playgroud)
请注意,使用y
command 您不必转义.
, y
command 接受文字字符。
尝试这个:
sed 's/\.\|$/\//g'
Run Code Online (Sandbox Code Playgroud)
|
是交替运算符。$
将匹配行尾。演示:
%echo org.gnome.Terminal.Legacy.Keybindings|sed 's/\.\|$/\//g'
org/gnome/Terminal/Legacy/Keybindings/
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2615 次 |
最近记录: |