テキストを探してそのテキストをコピーする方法は?

テキストを探してそのテキストをコピーする方法は?

多くの情報を含む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このモードで動作することは、PerlPerl正規表現を書くことができgrep-o通常どおり行全体ではなく一致する部分だけが印刷されることを意味します。

注:左側の項目は\K出力に表示されません。grep一致するが出力しないときに使用されることを示すGuardianフラグ(後ろを見ますが可変長です)。


結果:

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

関連情報