linux - 'sed' 可以做 'or' 类修剪吗?
问题描述
我正在处理一段代码,但它很难看。它有一条令人讨厌的线:
s/COM/ALPHA BETA GAMMA COM/g
s/DLX/ALPHA BETA GAMMA DLX/g
s/BE4/ALPHA BETA GAMMA BE4/g
s/BE2/ALPHA BETA GAMMA BE2/g
s/RS/ALPHA BETA GAMMA RS/g
如果找到 , 等中的任何一个BE2
,RS
则将其替换为Alpha Beta Gamma COM/DLX/BE4/BE2/RS
。但是,如果找到所有三个,则将替换每个。因为理想的输出是:
ALPHA BETA GAMMA COM DLX BE4 BE2 RS
请问有什么可以在sed中编码吗?它是真正的“NED、JED 或 TED”。或者,可以使用其他Linux吗?
解决方案
我了解您想在一行前面加上您列出的任何替代项ALPHA BETA GAMMA
。
您可以使用
echo "COM, DLX, BE4, BE2 and RS" | sed -E 's/.*\<(COM|DLX|BE4|BE2|RS)\>/ALPHA BETA GAMMA &/'
# => ALPHA BETA GAMMA COM, DLX, BE4, BE2 and RS
请参阅在线sed
演示。
细节
-E
- 一个 POSIX ERE 启用选项.*
- 任何 0+ 个字符\<
- 引导词边界(COM|DLX|BE4|BE2|RS)
- 匹配COM
或DLX
或BE4
或BE2
或RS
\>
- 尾随词边界ALPHA BETA GAMMA &
- 替换为ALPHA BETA GAMMA
、空格和整个匹配值(&
)。
推荐阅读
- python-3.x - 在python的特定列表中写入特定文件名
- android - 加密用户数据,但出于研究目的对其进行解密
- asynchronous - Rust 异步 FTP 下载
- process - 通过他的注册名称中的子字符串搜索过程
- javascript - Moment.js 为什么提供年份+周的日期给出前一周?
- javascript - useEffect 清理中的observer.unobserve() 抛出参数不是元素类型的错误
- python - AttributeError:“str”对象没有属性“strftime”面临错误
- reactjs - 使用 typescript 将 Kekule.js 集成到 React App Build 中
- python - conda install h3 在导入时仍然失败
- android - 无法识别的 Android Studio(或 IntelliJ IDEA 的 Android 支持插件)错误