
ファイル.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