如何在Linux中提取特定的字符串?

安妮

我是Bash的新手,因此在以下文件中如何获取特定字符串时遇到了困难:

  DS*SC*S45WG*X56558*2
  NE*823*2*SC*q345w45*DT*RTD*7530SRT
  RJTROIT**20140617
  SNA**TP*55
  DS*SC*S45WG*X56558*2
  NE*17*2*SC*211*DT*DFS*75304KSRTRSHT**20140617
  RSS**TP*55
  DS*SC*S45WG*X56558*2
  NE*18*1*SC*3435*DT*PR*753SLRT
  JSRT**20140617~RSS**TP*55
  DS*SC*S45WG*X56558*1
  NE*19*1*SC*ERS*DT*DFS*753048SRY
  TSERY4654**20140617~RSS**TP*60
  DS*SC*S45WG*X56558*1
  NE*19*1*SC*FRAE*DT*ESS*753048499RYTSR**20140722
  RSS**TP*140
  DS*SC*S45WG*X56558*1
  NE*73*46464
  SD**15769
  SNA*PUI*000015769

上面已经说明了这个文件,我想要获取以下所有数据/值:

7530SRTRJTROIT
75304KSRTRSHT
753SLRTJSRT
753048SRYTSERY4654
753048499RYTSR

(例如,NE * 823 * 2 * SC * q345w45 * DT * RTD旁边的那些)。谢谢!

西尔文·皮诺(Sylvain Pineau)

由于您感兴趣的值似乎被拆分为多行,因此我将依靠纯perl regexp来匹配正确的模式:

cat file.txt | perl -e 's/\s//g && print "$_\n" for join("", <>) =~ /\*([\w\s]+)[~]{0,1}\w{3}\*\*TP/gm'

注意:我已经假设您要查找的值以此定界符结尾:

XXX**TP这里XXX可能是RSSSNA在你的榜样。

怎么运行的

  • join("", <>)正在根据cat命令的结果创建一个字符串
  • 我使用=~以下正则表达式来解析(运算符):

    /\*([\w\s]+)[~]{0,1}\w{3}\*\*TP/gm

    此正则表达式查找以星号开头\*且由[A-Za-z0-9_]字符(快捷方式\w为单词)和空格\s(可能为~0或1次),然后为3个单词字符(例如:RSSSNA)组成的字符串星星\*\*紧随其后TP

    括号仅用于捕获包围在它们之间的模式。

    /gm是regexp修饰符,g将返回所有匹配的字符串(不仅是第一个),并m允许多行搜索。

  • for语句遍历所有结果并调用找到的每个匹配项s/\s//g && print "$_\n"

    s/\s//g删除所有空格(包括回车符)并print "$_\n"输出最终结果($_是for循环中的当前值)

它给了我期望的值(无需在命令中对其进行硬编码):

7530SRTRJTROIT
75304KSRTRSHT
753SLRTJSRT
753048SRYTSERY4654
753048499RYTSR

更新:(包括日期格式)

请现在使用以下命令:

cat file.txt | perl -e 'for$a(join("", <>)=~/\*([A-Z0-9\s]+?)\*\*\d{8}/g){$a=~s/\s+//g;print"$a\n"}'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从文件中提取特定字符串(Linux)

来自分类Dev

如何在SQL Server中提取特定的字符串?

来自分类Dev

从字符串中提取特定字符

来自分类Dev

如何在jQuery中从带条件的字符串中提取特定文本?

来自分类Dev

如何在Excel中提取遵循特定格式的文本字符串

来自分类Dev

如何在Java中提取字符串的特定部分

来自分类Dev

如何从字符串中提取特定模式

来自分类Dev

如何从特定字符串中提取时间?

来自分类Dev

如何从HTML中提取文本(在特定字符串之后)

来自分类Dev

如何从长字符串中提取特定部分

来自分类Dev

如何从 JavaScript 的 HTML 字符串中提取特定链接?

来自分类Dev

如何从数据帧的行中提取特定的字符串?

来自分类Dev

如何从列中提取特定字符串

来自分类Dev

如何在Linux中使用grep或awk从xml的字符串中提取值

来自分类Dev

如何在Linux的一行中提取子字符串

来自分类Dev

如何在InnoSetup中提取子字符串?

来自分类Dev

如何在R中提取字符串

来自分类Dev

如何在BeautifulSoap中提取结果字符串?

来自分类Dev

如何在Android中提取此字符串变量?

来自分类Dev

如何在Android中提取字符串变量?

来自分类Dev

如何在C ++中从字符串中提取数字

来自分类Dev

如何在 Bash 中提取引号之间的字符串

来自分类Dev

如何在Powershell中提取子字符串

来自分类Dev

从字符串中提取特定部分

来自分类Dev

在JAVA中提取特定的字符串

来自分类Dev

在JavaScript中提取特定字符串

来自分类Dev

从文本中提取特定的字符串

来自分类Dev

从流中提取特定的字符串

来自分类Dev

从字符串中提取特定部分