如何用sed提取ABC-数字格式的行并移除连字符?
用sed实现需求的命令
直接用这条sed命令就能搞定:
sed -n 's/^ABC-\([0-9]\+\)$/ABC\1/p' file.txt
命令拆解:
-n:关闭sed默认的逐行打印,只输出我们处理后的匹配行^ABC-\([0-9]\+\)$:精准匹配整行内容就是ABC-加一串数字的行,其中\([0-9]\+\)用来捕获ABC-后面的所有数字(\+表示至少一个数字,满足数字可变的需求)ABC\1:把匹配到的行替换成ABC加上刚才捕获的数字部分,自然就去掉了连字符p:打印处理后的结果
如果你的需求是行内包含ABC-数字片段(比如行里还有其他内容),可以用这条命令:
sed -n 's/.*ABC-\([0-9]\+\).*/ABC\1/p' file.txt
这条会忽略行里的其他内容,只提取并处理ABC-数字的部分。
测试你给的file.txt,第一条命令会输出ABC12,完全符合要求。
内容的提问来源于stack exchange,提问作者jm90
相关产品推荐
相关产品推荐

