我有一个脚本可以创建一个包含大量信息的 txt 文件。我想检查其中是否有特定的文本,然后复制后面的内容。例如,这是 txt 文件:
blablablaWANTEDTEXT[TEXTTOCOPY]blablabla...
我想检查是否WANTEDTEXT
存在,如果存在,则复制接下来的内容,[
又名.]
TEXTTOCOPY
谢谢
答案1
> echo blablablaWANTEDTEXT[TEXTTOCOPY]blablabla... |
> awk -v searchtext=WANTEDTEXT '$0 ~ searchtext "\\[.*\\]" {
strstart=index($0,searchtext "[")+length(searchtext)+1;
tmpstr=substr($0,strstart); sub("].*$","",tmpstr); print tmpstr; } '
TEXTTOCOPY
答案2
echo '....' | grep -oP 'WANTEDTEXT\[\K[^]]*'
grep
在该模式下操作的地方Perl
,意味着您可以编写 Perl 正则表达式grep
,并且-o
将仅打印匹配部分,而不是像平常那样打印整行。
注意: 左侧的任何内容\K
都不会显示在输出中。它是一种守护者标志(向后查找但长度可变),指示grep
在匹配但不输出时使用它。
结果:
TEXTTOCOPY
答案3
#!/bin/bash
greptext=$(echo blablablaWANTEDTEXT[TEXTTOCOPY]blablabla | grep "WANTEDTEXT")
if [[ -n $greptext ]]; then
ftext=$(echo "blablablaWANTEDTEXT[TEXTTOCOPY]blablabla" | cut -d'[' -f2 | cut -d']' -f1)
echo $ftext
fi