![文本操作:提取括号内的所有内容](https://linux22.com/image/89867/%E6%96%87%E6%9C%AC%E6%93%8D%E4%BD%9C%EF%BC%9A%E6%8F%90%E5%8F%96%E6%8B%AC%E5%8F%B7%E5%86%85%E7%9A%84%E6%89%80%E6%9C%89%E5%86%85%E5%AE%B9.png)
我有一个文本文件,其中每一行的格式与此类似:
%#&#%# [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