使用awk查找分隔符后第一次出现的字符串

DrD*_*vid 25 bash awk

我有一堆文件,所有文件都Account number: 123456789在不同的位置.

我需要做的是能够解析文件,并找到帐号本身.因此,awk需要寻找Account number:并立即返回字符串.

例如,如果是:

Account number: 1234567
Run Code Online (Sandbox Code Playgroud)

awk 应该返回:

1234567
Run Code Online (Sandbox Code Playgroud)

一旦发现它第一次出现就可以停止寻找.

但是,我很难过.使用这种方法的正确方法是什么awk

Gur*_*uru 39

单程:

awk -F: '$1=="Account number"{print $2;exit;}' file
Run Code Online (Sandbox Code Playgroud)

我假设您想要在文件中找到第一个出现的那一刻停止.如果要在文件的每一行中查找事件,只需删除exit.


小智 7

接受的答案在字符串前面输出一个空格,这迫使我使用另一种方法:

awk '/Account number/{print $3; exit}'
Run Code Online (Sandbox Code Playgroud)

这个解决方案忽略了:分隔符,但工作起来就像一个魅力,并且在我看来更容易记住。


小智 6

您可以使用if检查$1$2平等的"账户"和"数量".如果他们这样做,那么打印$3:

> awk '{if ($1 == "Account" && $2 == "number:") {print $3; exit;}}' input.txt
Run Code Online (Sandbox Code Playgroud)

  • @tianon实际上你可以这样做:`awk'/^帐号:/ { print $3; 退出}'文件` (2认同)