如何使用 grep 提取特定单词并存储到变量



我想问一下如何使用 grep 提取下面的这些粗体字:

主题: [打印][打印机-tj]

寄件人:约翰·史密斯 <<strong>john.s@gmail.com>

收件人: print@gmail.com

内容类型:text/html;charset=UTF-8 内容传输编码:带引号可打印

内容类型:应用程序/pdf;名称="a.pdf"

例如,我想将这些单词存储到不同的变量中:

a = printer-tj
b = john.s@gmail.com
c = application/pdf
d = a.pdf

如何使用 grep 实现它?

据我所知,我可以这样使用,但我不确定这是否正确:

a = grep -Po 'Subject: [print][K[^]]+'

这个解决方案更简洁一些:

#!/bin/bash
awk 'BEGIN { FS="[\[\]<>"; ]+" }
/^Subject:/ { a = $3; next; }
/^From:/ { b = $4; next; }
/^Content-Type:/ { c = $2; d = $4; next; }
END { print a, b, c, d; }' file | read a b c d

不确定您根据需要存储所有变量的目的是什么。但我的尝试是这样的:-

#!/bin/bash
a=$(grep -w "Subject:" file | awk '{print $2}' | sed 's/.*[([^]]*)].*/1/g')
b=$(grep -w "From:" file | awk 'NR>1{print $1}' RS="<" FS=">")
c=$(grep -w "Content-Type:" file | awk 'NR>1{print}' | awk -F";" '{print $1}' | cut -d ":" -f2)
d=$(grep -w "Content-Type:" file | awk 'NR>1{print}' | awk -F";" '{gsub(/"/, "", $2); print $2}' | cut -d "=" -f2)

将在echo到标准输出时产生输出。

printer-tj
john.s@gmail.com
application/pdf
a.pdf

相关内容

  • 没有找到相关文章

最新更新