![如何从文件中提取部分行](https://linux22.com/image/77501/%E5%A6%82%E4%BD%95%E4%BB%8E%E6%96%87%E4%BB%B6%E4%B8%AD%E6%8F%90%E5%8F%96%E9%83%A8%E5%88%86%E8%A1%8C.png)
文件.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