首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Bash中,grep表示一行,并在文件中打印该行,但包含更多信息。

在Bash中,grep表示一行,并在文件中打印该行,但包含更多信息。
EN

Stack Overflow用户
提问于 2016-05-04 17:09:48
回答 2查看 58关注 0票数 2

在bash中,我使用grep命令将结果打印到文件中:

代码语言:javascript
复制
  grep "4 CA   1" CVOLOPTs*SYMREMO.out | grep "11 O    0 0 0" >> data.dat

它在data.dat文件中打印以下内容:

代码语言:javascript
复制
 4 CA   1     2.3311     4.4052   11 O    0 0 0

我想使data.dat看起来如下所示:

代码语言:javascript
复制
 252   4 CA   1     2.3311     4.4052   11 O    0 0 0

我试过这样的方法:

代码语言:javascript
复制
grep "4 CA   1" CVOLOPTs*SYMREMO.out | grep "11 O    0 0 0" >> echo "252" data.dat

但不起作用。

如果你能帮帮我,我会很感激的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-04 17:16:09

另外一个带有awk的管道可以做到这一点:

代码语言:javascript
复制
grep "4 CA   1" CVOLOPTs*SYMREMO.out | grep "11 O    0 0 0" | awk ´{print "252",$0}´ >> data.dat

整个过程都可以用一个awk来完成。

代码语言:javascript
复制
awk ´/4 CA   1/ && /11 O    0 0 0/ {print "252",$0}' CVOLOPTs*SYMREMO.out >> data.dat

$0是整个当前行。在这种情况下,由2正则表达式选择的行。

awk逐个读取每一行。

Regex代表正则表达式。在awk中,它们包含在/中:例如:/4 CA 1/

/4 CA 1/ && /11 O 0 0 0/是一个表达式:当正在读取的行同时匹配第一个regex and (&&)和第二个regex时,这是正确的。在这种情况下,只有字符串;请参阅Open规范问题6中的 9. Regular Expressions

票数 3
EN

Stack Overflow用户

发布于 2016-05-04 17:23:50

您可能不需要使用grep,因为您可以使用这个awk一行实现所需的输出:

代码语言:javascript
复制
awk '/4 CA   1/ && /11 O    0 0 0/{printf "252\t%s\n",$0}' CVOLOPTs*SYMREMO.out >> data.dat

我在252之后放置了一个选项卡,它可能会更改为一个或多个空白空间

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

https://stackoverflow.com/questions/37034025

复制
相关文章

相似问题

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