首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用awk从文件的每一行中只提取特定的字符串?

如何使用awk从文件的每一行中只提取特定的字符串?
EN

Stack Overflow用户
提问于 2022-04-11 10:13:05
回答 5查看 295关注 0票数 0

我想知道是否有一种通用的方法来提取特定的字符串,根据设计,它是一个使用awk方法的11个字符字母数字字符串?对前-

cat ext.txt

代码语言:javascript
运行
复制
This is a sample field where the code is MGTCBEBEECL for NR
This is a sample field where the code is MGTCBEBEE01 for NR
This field must be 030 when Rule_1 = 'FR' and Rule_2  is 'EUROFRANSBI' or 'EURO_NEAR' and code is PARBFRPPXXX 
This field must be 0186 when Rule_1 = 'FR' and Rule_2  is 'EUROFRANSBI' or  'EURO_NEAR' and code is CITIFRPPXXX for the NR
For NFNC with Rule_1 is CA and Rule_2 is Universal and business code is null and official code must be 'CIBCCATTXXX'

我只想提取密码:-

代码语言:javascript
运行
复制
MGTCBEBEECL 
MGTCBEBEE01 
PARBFRPPXXX 
CITIFRPPXXX 
CIBCCATTXXX

几乎有100行这样的线,我希望从中提取这些不同的字符串,但我在我的智慧结束如何使它更通用和非多余,因此寻求这个社会的帮助!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2022-04-11 10:25:00

使用当前的示例,您可以使用这样的grep来完成它:

代码语言:javascript
运行
复制
<ext.txt grep -oE "(code is|code must be) '?[A-Z0-9]{11}'?" | 
tr -d "'"                                                   |
grep -o '[^ ]*$'

输出:

代码语言:javascript
运行
复制
MGTCBEBEECL
MGTCBEBEE01
PARBFRPPXXX
CITIFRPPXXX
CIBCCATTXXX
票数 0
EN

Stack Overflow用户

发布于 2022-04-11 13:13:37

GNU awk有一种使用FPAT的方法:

代码语言:javascript
运行
复制
awk -v FPAT='[[:alnum:]]{11}' '{print $NF}' file
MGTCBEBEECL
MGTCBEBEE01
PARBFRPPXXX
CITIFRPPXXX
CIBCCATTXXX

将FPAT设置为characters.

  • and GNU的
  • 可以处理包含字母数字字符串的字段,其中包含11个{print $NF},用于打印所需的字段。
票数 2
EN

Stack Overflow用户

发布于 2022-04-11 10:42:08

使用gawk:

代码语言:javascript
运行
复制
gawk -F "[ ']" 'BEGIN{ r=@/[A-Z]{11}/ }r{ for (i=1; i<=NF;i++){ if($i~r) print $i} }' ext.txt

  • -F "[ ']"使用空格或'作为字段分隔符(还可以找到像'CIBCCATTXXX')
  • r=@/[A-Z]{11}/这样的代码,指定已使用的正则表达式(因为在一行的所有字段上script
  • for(...循环中使用了两次),并在匹配正则表达式时打印字段。

产出:

代码语言:javascript
运行
复制
MGTCBEBEECL
EUROFRANSBI
PARBFRPPXXX
EUROFRANSBI
CITIFRPPXXX
CIBCCATTXXX
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71826058

复制
相关文章

相似问题

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