文本操作:提取括号内的所有内容

文本操作:提取括号内的所有内容

我有一个文本文件,其中每一行的格式与此类似:

%#&#%#    [Dinero]    / Money / 
!#@%$@    [Dia]     / Day /
$%&$^#@ [Perro]   / Dog / 

我正在寻找提取括号内的单词,即。 Ola、Dinero、Perro 等,并将其全部逐行保存到新的文本文件中。本质上,我希望省略/删除/擦除全部单词、字母、特殊字符以及方括号之外的任何其他内容,包括方括号本身。

答案1

在...的帮助下awk

$ awk -F'[][]' '{print $2}' < input
Dinero
Dia
Perro

使用grep

grep -oP '\[\K[^\]]+' input

\K意味着使用环视四周正则表达式高级功能。更准确地说,它是一个积极的后向断言

如果您缺少该-P选项,您可以通过以下方式执行此操作perl

perl -lne '/\[\K[^\]]+/ and print $&' input

使用-i选项就地编辑文件。

或者您可以cut按照@juliepelletier的建议使用,

cut -d"[" -f2 < input | cut -d"]" -f1

答案2

sed 's/^.*\[//;s/\].*$//' /path/to/input > /path/to/output

相关内容