文件.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