ファイルから部分行を抽出する方法

ファイルから部分行を抽出する方法

ファイル.txt:

hello:"hello"; my love; my world:"my is world"
Questions<<my:"475832">> data-addon="652256"---my lover :"987654321";;;Questions
heart!Questions

しかし、文字列 "data-addon ="の後に数字を取得したいと思います。

例:

652256

コマンドを使用できますかawk

答え1

使いやすくなりましたgrep

grep -Po 'data-addon="\K[^"]*' file

または、出力を変数に保存します。

var=$(grep -Po 'data-addon="\K[^"]*' file)

答え2

サンプルデータを別の名前で保存manuel.txtし、次を実行します。

awk '/data-addon/ {gsub(/^.*data-addon="/,"");gsub(/".*/,"");print}' manuel.txt

結果を変数に保存します。

myvar=$(awk '/data-addon/ {gsub(/^.*data-addon="/,"") ; gsub(/".*/,"") ; print}' manuel.txt)

sedでは簡単です。

sed -n '/data-addon/ { s/^.*data-addon="// ; s/".*// p}' manuel.txt 
myvar=$(sed -n '/data-addon/ { s/^.*data-addon="// ; s/".*// p}' manuel.txt)

答え3

この場合は、を使用してawk引用符とスペースで単語を分割し、フィールドを繰り返します。

awk -F'[ "]*' \
'
{
  for (i=1;i<=NF;i++)
  {
    if ($i == "data-addon=")
    {
      print $(i+1)
      exit
    }
  }
}
' file.txt

ファタイ

答え4

次は必要な作業を行う必要があります。

cat file.txt | awk -F"data-addon=" '{print $2}' | awk -F\" '{print $2}' | awk NF

関連情報