使用命令行Unix实用程序重写文件数据

时间:2015-12-29 22:08:44

标签: bash unix awk sed

我有一个这样的文件:

 "4" 15356 15422
 "8" 15289 15355
 "7" 14145 15288
 "6" 14071 14139

如何使用awk或其他bash工具将其重写为

 mm4 15356 15422
 mm8 15289 15355
 mm7 14145 15288
 mm6 14071 14139

4 个答案:

答案 0 :(得分:2)

使用sed,假设文件为file

sed 's/"/mm/;s/"//' file

答案 1 :(得分:2)

使用GNU sed:

sed -r 's/"([0-9]+)"/mm\1/' file

输出:

 mm4 15356 15422
 mm8 15289 15355
 mm7 14145 15288
 mm6 14071 14139

答案 2 :(得分:2)

sed将是最简单,最有效的工具。我使用类似于

的正则表达式替换命令
sed 's/"\([0-9]*\)"/mm\1/' filename

这将搜索包含在双引号中的数字模式(零或更多),并用前面带有mm的匹配数字替换它们。

虽然我手边只有GNU sed的副本,但上面应该适用于所有版本的sed,因为它只使用Basic Regular Expressions as defined by POSIX

如果你正在使用GNU sed并想要替换文件的内容,那么你 可以包含-i / --in-place标记:

sed -i.bak 's/"\([0-9]*\)"/mm\1/' filename

将备份副本复制为filename后修改内容 filename.bak。如果您不想要备份文件,请省略-i选项中的后缀。

答案 3 :(得分:2)

另一种选择

tr -d '"' <file | sed 's/^ / mm/'

 mm4 15356 15422
 mm8 15289 15355
 mm7 14145 15288
 mm6 14071 14139

PS。保留领先的空间