我有这样的档案:
"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发布于 2015-12-29 22:15:24
使用sed时,假设文件是file
sed 's/"/mm/;s/"//' file发布于 2015-12-29 22:29:58
sed将是使用最简单和最有效的工具。我使用一个正则表达式替换命令,类似于
sed 's/"\([0-9]*\)"/mm\1/' filename这将搜索包含在双引号中的数字(0或更多)的模式,并用mm前面的匹配数字替换它们。
虽然我手头只有一个GNU的副本,但由于它只使用POSIX定义的基本正则表达式,所以上面的内容应该适用于sed的所有版本。
如果您正在使用GNU并希望替换文件的内容,则可以包括-i / --in-place标志:
sed -i.bak 's/"\([0-9]*\)"/mm\1/' filename这将修改filename的内容,并将其备份为filename.bak。如果不需要备份文件,请省略-i选项中的后缀。
发布于 2015-12-29 23:26:49
另一种选择
tr -d '"' <file | sed 's/^ / mm/'
mm4 15356 15422
mm8 15289 15355
mm7 14145 15288
mm6 14071 14139ps。保留前导空间
https://stackoverflow.com/questions/34519850
复制相似问题