Doc*_*iki 5 linux string shell sed
我在Linux Shell中有一个用点分隔的字符串,
$example=This.is.My.String
Run Code Online (Sandbox Code Playgroud)
我想要
1.在最后一个点之前添加一些字符串,例如,我想在最后一个点之前添加"Good.Long",所以我得到:
This.is.My.Goood.Long.String
Run Code Online (Sandbox Code Playgroud)
2.获取最后一个点后面的部分,这样我就可以了
String
Run Code Online (Sandbox Code Playgroud)
3.将点转换为下划线除了最后一个点,所以我会得到
This_is_My.String
Run Code Online (Sandbox Code Playgroud)
如果你有时间,请解释一下,我还在学习正则表达式.
非常感谢!
Joh*_*web 10
我不知道'Linux Shell'是什么意思所以我会假设bash.此解决方案也适用于zsh,等等:
example=This.is.My.String
before_last_dot=${example%.*}
after_last_dot=${example##*.}
echo ${before_last_dot}.Goood.Long.${after_last_dot}
This.is.My.Goood.Long.String
echo ${before_last_dot//./_}.${after_last_dot}
This_is_My.String
Run Code Online (Sandbox Code Playgroud)
临时变量before_last_dot和after_last_dot应解释一下我的使用%和##运营商.的//,我也认为是不言自明,但我会很高兴,如果你有任何问题澄清.
这不使用sed(甚至是正则表达式),而是使用bash内置参数替换.我更喜欢每个脚本只使用一种语言,尽可能少的叉子:-)
| 归档时间: |
|
| 查看次数: |
3050 次 |
| 最近记录: |