有没有一种很好的方法可以使用正则表达式将文本列从文件复制到我的粘贴板中



目前,我拥有的解决方案有点丑陋,并且非常像意大利面条代码......有没有一种好方法可以使用像 ack 这样的"标准"工具做到这一点?

我现在拥有的是这种格式的文件:

废话.txt:

IdentifierA Some Text
IdentifierB Some Other

这是我目前得到它的方式:

cat crap.txt |
ack (?<=IdentifierA ).+ |
awk '{ print $(NF-1), $NF }' |
pbcopy

这将在粘贴板中产生Some Text

与其只是ack回显出与正则表达式匹配的行,然后用awk获取该行的最后两列,我是否可以只获取特定的正则表达式匹配以打印到控制台?我尝试使用grep -o但这似乎没有积极的回望......

有些像这样:

awk '/IdentifierA/ { print $(NF-1),$NF}' crap.txt
Some Text

此搜索IdentifierA并打印该行的最后两个文件。

awk -F'IdentifierA\s*' '$0=$2' file

无论目标部分中有多少空格,此行都会选择IdentifierA后的所有文本(删除前导空格/制表符)。 这意味着,您不必print $(NF-n), $(NF-n-1)...或者文本是否具有TAB而不是space

例如,在这种情况下:

IdentifierA a b c d e f g h i j k l

测试:

kent$  echo "IdentifierA Some Text
IdentifierB Some Other"|awk -F'IdentifierA\s*' '$0=$2' 
Some Text
kent$  echo "IdentifierA a b c d e f g h i j k l"|awk -F'IdentifierA\s*' '$0=$2'
a b c d e f g h i j k l 
顺便说一句,如果你想

提取文本,grep是一个非常方便的工具:

kent$  echo "IdentifierA a b c d e f g h i j k l"|grep -oP 'IdentifierAs*K.*'  
a b c d e f g h i j k l

相关内容

  • 没有找到相关文章

最新更新