首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用命令行Unix实用程序重写文件数据

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

Stack Overflow用户
提问于 2015-12-29 22:08:44
回答 3查看 166关注 0票数 1

我有这样的档案:

代码语言:javascript
复制
 "4" 15356 15422
 "8" 15289 15355
 "7" 14145 15288
 "6" 14071 14139

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

代码语言:javascript
复制
 mm4 15356 15422
 mm8 15289 15355
 mm7 14145 15288
 mm6 14071 14139
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-29 22:15:24

使用sed时,假设文件是file

代码语言:javascript
复制
sed 's/"/mm/;s/"//' file
票数 2
EN

Stack Overflow用户

发布于 2015-12-29 22:29:58

sed将是使用最简单和最有效的工具。我使用一个正则表达式替换命令,类似于

代码语言:javascript
复制
sed 's/"\([0-9]*\)"/mm\1/' filename

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

虽然我手头只有一个GNU的副本,但由于它只使用POSIX定义的基本正则表达式,所以上面的内容应该适用于sed的所有版本。

如果您正在使用GNU并希望替换文件的内容,则可以包括-i / --in-place标志:

代码语言:javascript
复制
sed -i.bak 's/"\([0-9]*\)"/mm\1/' filename

这将修改filename的内容,并将其备份为filename.bak。如果不需要备份文件,请省略-i选项中的后缀。

票数 2
EN

Stack Overflow用户

发布于 2015-12-29 23:26:49

另一种选择

代码语言:javascript
复制
tr -d '"' <file | sed 's/^ / mm/'

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

ps。保留前导空间

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34519850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档