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

Bil*_*ly 4 sed perl text-processing

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

%#&#%#    [Dinero]    / Money / 
!#@%$@    [Dia]     / Day /
$%&$^#@ [Perro]   / Dog / 
Run Code Online (Sandbox Code Playgroud)

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

Rah*_*hul 5

在...的帮助下awk

$ awk -F'[][]' '{print $2}' < input
Dinero
Dia
Perro
Run Code Online (Sandbox Code Playgroud)

使用grep

grep -oP '\[\K[^\]]+' input
Run Code Online (Sandbox Code Playgroud)

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

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

perl -lne '/\[\K[^\]]+/ and print $&' input
Run Code Online (Sandbox Code Playgroud)

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

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

cut -d"[" -f2 < input | cut -d"]" -f1
Run Code Online (Sandbox Code Playgroud)

  • 为了简单起见,我想回答:`cat input|cut -d\[ -f2|cut -d\] -f1` (3认同)