繁体   English   中英

如何使用awk提取较长字符串中括号之间的文本?

[英]How to extract text between parentheses within a longer string using awk?

我是awk / regex的初学者,所以我为这个笨拙的问题表示歉意。 当合并这些字段时,我似乎对awk最为困难。 我有一个较长的awk脚本,该脚本正在解析多个平面文件表,但是此特定列遇到了一些麻烦。

我的数据如下所示:

           EFGH1234
    (ABCD#)EFGH1234
  (LMNOPQ#)RSTU6789

我正在尝试将括号中的文本分开,因为它是自己的列,如下所示:

          EFGH1234
    ABCD  EFGH1234
  LMNOPQ  RSTU6789

我已经尝试搜索,到目前为止,发现的表达式比我在这里尝试的更为复杂。 任何帮助将不胜感激。

这是您所需要的吗?我猜这里的意思是指去除寄生物。

perl -pe 's/[\(|\)|\#]/ /g' your_file

或awk:

awk 'gsub("[(|#)]"," "){print}' your_file
    ABCD EFGH1234
  LMNOPQ RSTU6789
  LMNOPQ  RSTU6789

我假设您正在尝试创建额外的“列”,以便您可以使用它们。 使用split()函数将字段拆分为数组。 而且,如果您保留拆分创建的元素/键的数量的计数,则可以将此计数用作测试。 例如:

awk '{ n = split($1, a, /[()#]/); print (n==1 ? $0 : a[2] FS a[4]) }' file

结果:

           EFGH1234
ABCD EFGH1234
LMNOPQ RSTU6789

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM