首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种很好的方法可以使用regex将文本列从文件复制到我的pasteboard中?

是否有一种很好的方法可以使用regex将文本列从文件复制到我的pasteboard中?
EN

Stack Overflow用户
提问于 2013-12-18 21:06:02
回答 2查看 117关注 0票数 1

目前,我的解决方案有点难看,很像意大利面代码.有什么好的方法可以用像ack这样的“标准”工具来完成吗?

我现在拥有的是一个以这种格式显示的文件:

crap.txt:

代码语言:javascript
复制
IdentifierA Some Text
IdentifierB Some Other

我现在就是这样得到的:

代码语言:javascript
复制
cat crap.txt |
ack (?<=IdentifierA ).+ |
awk '{ print $(NF-1), $NF }' |
pbcopy

这将产生Some Text在您的纸板。

与其让ack回显与regex匹配的行,然后用awk获取该行的最后两列,不如让特定的regex匹配输出到控制台?我试过使用grep -o,但这似乎没有积极的背后.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-18 21:14:05

有些人是这样的:

代码语言:javascript
复制
awk '/IdentifierA/ { print $(NF-1),$NF}' crap.txt
Some Text

此搜索IdentifierA并打印最后两次从该行提交的文件。

票数 1
EN

Stack Overflow用户

发布于 2013-12-18 21:29:39

代码语言:javascript
复制
awk -F'IdentifierA\\s*' '$0=$2' file

无论目标部分中有多少空格,这一行都会在IdentifierA之后选择所有文本(去掉前导空格/制表符)。这意味着,您不必使用print $(NF-n), $(NF-n-1)...,或者如果文本具有TAB而不是space

例如,在这种情况下:

代码语言:javascript
复制
IdentifierA a b c d e f g h i j k l

测试:

代码语言:javascript
复制
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是一个非常方便的工具:

代码语言:javascript
复制
kent$  echo "IdentifierA a b c d e f g h i j k l"|grep -oP 'IdentifierA\s*\K.*'  
a b c d e f g h i j k l
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20668378

复制
相关文章

相似问题

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