Shell Script:在文本中间抓取字符串,有时在开头

shi*_*tso 9 shell-script text-processing

我有一个很大的文本文件,其中的一部分看起来像这样(编辑过的值):

JULIANA XXXX006060 LI1033322 THC BRL 730.00
XXXX006296 AA1004737 THC BRL 1,740.00
SANTOS JULIANA XXXX006668 AA1004786 THC BRL 8,150.00
SANTOS JULIANA CABINDA XXXX006697 AA1004777 THC BRL 2,325.00
SANTOS JULIANA XXXX006699 AA1004790 THC BRL 2,325.00
JULIANA BATA XXXX006141 CCC012946 THC BRL 1,460.00
JULIANA BATA XXXX006153 CCC013054 THC BRL 870.00
JULIANA XXXX006269 CCC013105 THC BRL 870.00
JULIANA XXXX006295 CCC013083 THC BRL 870.00
JULIANA BATA XXXX006305 CCC013043 THC BRL 1,460.00
Run Code Online (Sandbox Code Playgroud)

我想总是抓取(用 acutawk其他东西)以 开头的字符串XXXX00,但它永远不会在同一个字段编号中。

我怎样才能在 shell 脚本中做到这一点?

cha*_*aos 12

grep为它:

grep -oE 'XXXX00[0-9]*' file
Run Code Online (Sandbox Code Playgroud)
  • -o:仅打印匹配部分。
  • -E: 激活扩展正则表达式。
  • [0-9]*: 在要搜索的字符串之后,应该只出现数字。


gle*_*man 6

看来你想要右边的第 5 个字段,所以

awk '{print $(NF-4)}' file
Run Code Online (Sandbox Code Playgroud)