如何从文件中提取部分行

如何从文件中提取部分行

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

相关内容