bash - Bash:如果只有字母,如何仅替换括号之间的内容
问题描述
假设我有这条线:
Centrino Advanced-N 6205 [Taylor Peak] [0085]
我想将其更改为:
Centrino Advanced-N 6205 (Taylor Peak) [0085]
仅当括号之间有字母和空格时,将括号从 [ ] 更改为 ( ) 的最佳方法是什么?
带有数字的 [ ] 应该保持不变。
解决方案
sed
在这里工作正常。
line="Centrino Advanced-N 6205 [Taylor Peak] [0085]"
echo $line | sed -E 's/\[([A-Za-z ]+)\]/(\1)/g'
该-E
标志打开扩展正则表达式(允许(...)
捕获组工作而无需转义黑斜线以及+
匹配一个或多个事件)。
[A-Za-z ]
将仅匹配字母和空格,因此不会匹配带有数字的括号(或任何其他类型的内容)。
推荐阅读
- firebase - 当产品到期日期临近时,从 Firebase 向 Android 应用发送通知
- php - How to get date range of 7 days before and after of given date and populate in select - Laravel
- spring - 使用 mockMvc 测试可选请求标头
- java - 如何使用“jstat”
- flutter - 如何将 id_user 发送到第二页
- react-native - React-native:null 不是对象(评估 'RNFSMANAGER.RNFSFileTypeRegular')
- python - Tensorflow ValueError:无法将大小为 62842880 的数组重塑为形状(4352,3610,3)
- ansible - 剧本中的这些 Ansible 任务能否以某种方式合并为一个任务?
- xml - 在运行时在 xml 文件中的 Veins SUMO 中更改或更新路线
- flutter - 当我按下按钮时,如何将此测验视图交换为我的颤振测验应用程序?