首页 > 解决方案 > sed/awk 命令在保留空格的同时替换模式

问题描述

我的目录中有多个文件,其中一行带有这样的模式:

.declare  trading_name__w       a22
.declare  trading_name__w  a22
.declare  trading_name__w             a22

我想用 替换单词,保持单词之间的a22间距a40一致(因为它们在原始文件中)。

我试过这个命令:

sed 's/trading_name__w\([^%]\+\)a22/trading_name__w\([^%]\+\)a40/g' filename

但它扰乱了单词之间的间距:

.declare  trading_name__w([^%]+)a40

如何使用 sed 或 awk 做到这一点?

标签: bashunixawksed

解决方案


您必须\1在替换字符串中使用来复制捕获组。

sed 's/trading_name__w\([^%]\+\)a22/trading_name__w\1a40/g' filename

推荐阅读