Awk 在grep中提取起点和终点之间的文本-仅限第一个实例

Awk 在grep中提取起点和终点之间的文本-仅限第一个实例,awk,sed,grep,Awk,Sed,Grep,如何仅在第一个实例中提取字符串之间的文本 资料来源: test66="keyword1"y67h6y7 test66="keyword2"hj67h67j test66="keyword3"f54fd543f456 输出: keyword1 灵感来自: 输出: keyword1 awk方式 适用于您的最新需求 awk '{x=match($0,/test66="([^"]+)"/,a)}x{print a[1];exit}' file 塞德路 sed -n '/test66="\([^"

如何仅在第一个实例中提取字符串之间的文本

资料来源:

test66="keyword1"y67h6y7 test66="keyword2"hj67h67j
test66="keyword3"f54fd543f456
输出:

keyword1
灵感来自:

输出:

keyword1
awk方式 适用于您的最新需求

awk '{x=match($0,/test66="([^"]+)"/,a)}x{print a[1];exit}' file
塞德路

sed -n '/test66="\([^"]\+\)".*/{s//\1/p;q}' file
他们做的事情几乎完全一样

1.搜索字符串

2.在引号之间存储值

3.打印该值


4.退出

这可能适用于您的GNU-sed:

sed -r '/test66="/{s//\n/;s/^[^\n]*\n([^"]*)".*/\1/;q}' file

用标记替换所需的图案,即。\n并删除标记两侧的字符串,打印并退出

对于test66=keyword1 test66=keyword2,这不正确。您不太清楚字符串之间的含义。尝试改进解释并给出一些尝试。
sed -n '/test66="\([^"]\+\)".*/{s//\1/p;q}' file
sed -r '/test66="/{s//\n/;s/^[^\n]*\n([^"]*)".*/\1/;q}' file