如何查找文本并复制该文本?

如何查找文本并复制该文本?

我有一个脚本可以创建一个包含大量信息的 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

相关内容