【发布时间】:2018-04-01 03:49:16
【问题描述】:
我有很多文件包含一些固定的单词和数字: FIRST SET 数字有 7 位的固定长度:前 4 位就像一个随机前缀(例如是 100,200,300,但也可以是其他 ..)我们不需要它,我们对剩下的 4 位感兴趣。 number/s 的 SECOND SET 是根据 FIRST SET 的最后 4 位生成的数字(xxx7777 = 7777;xxx0066 = 66)。你可以看到 SECOND SET 不能有前导零,它们已经被剪掉了,这是一个规则。
输入
first second third 1007777 fourth 7777
...
first second third 2008341 fourth 8341
...
first second third 3000005 fourth 5
...
...
first second third 2008341 fourth 8
...
first second third 2008341 fourth 341
我在这里的其他示例中找到了 - 如何使用 grep 查找感兴趣的行,但我没有找到 AWK 示例做我想做的事,因为前导零的规则可能我遇到了问题..
我的尝试来找出错误的世代:
grep -Pr 'first second third' docs/test/*.txt | awk '{ if($4=$6) print $4 " " $6}'
7777 7777
8341 8341
5 5
8 8
341 341
正确的输出应该是这样的:
2008341 8
2008341 341
..只有问题(不是正确生成的)行和文件名。
谢谢! :)
【问题讨论】:
-
$4=$6是一个作业。您的意思是$4==$6进行测试。当然还有其他问题... -
给新手的建议:如果一个答案解决了您的问题,请点击旁边的大复选标记 (✓) 接受它,也可以选择投票(投票至少需要 15 个声望)点)。如果您发现其他答案有帮助,请给他们投票。接受和投票有助于未来的读者。请看the relevant help-center article