我有一个这样的文件:
"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
答案 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。保留领先的空间