如何从文件中提取带引号的字符串的内容

如何从文件中提取带引号的字符串的内容

有一个如下所示的文件:

anm="12S123S" family="" type="Std" product="" name="nand" allow="yes"
anm="12321 S=" family="" type="Std" product="" name="dan" need="No"
anm="SWED" family="" type="Std" product="" name="dmr" test="clasic"

输出应该是

12S123S
12321 S=
SWED

答案1

收集所有对 OP 的评论:

by cut(将字段分隔符设置为"并仅从分隔符存在的行打印第二个字段):

cut -sd\" -f2

经过grep 吉米(找到图案并\K仅在之后打印它的一部分):

grep -Po 'anm="\K[^"]*'

经过awk 杰森·瑞恩(将字段分隔符设置为"并打印第二个字段):

awk -F\" '{print $2}'

by sed(将所有行替换为反向匹配(括号内())匹配"第一个之外的所有内容",并打印仅进行此类替换的行):

sed -n 's/[^"]*"\([^"]*\).*/\1/p'

答案2

您可以anm="..."使用 grep 提取该部分,如下所示:

grep -Eo 'anm="[^"]*"' file

grep选项-o仅输出行中匹配的部分。

然后删除每行anm="开头和"结尾的:

grep -Eo 'anm="[^"]*"' file | sed -e 's/^anm=\"//' -e 's/\"$//'

相关内容