如何从grepped字符串获取数据?

时间:2019-06-25 13:41:48

标签: bash sed grep

我需要从grepped的字符串中获取数据,但是我是新手。

我已经像这样提取了数据字符串:

email=test@mail.com&id=12451233&name=Susanna&surname=Scott&street=East

我需要从中解析电子邮件,ID,姓名和姓氏。

尝试使用grep:

sed -e 's/email\ \(.*\)&id/\1/'

什么也没发生(需要使用sed来完成) 第二步显示数据

预期格式:

test@mail.ru|12451233|Susanna|Scott

2 个答案:

答案 0 :(得分:1)

您可以使用awk

awk -F "=|&" '{print $2, $4, $6, $8}'

-F是长分隔符,在您的情况下为=或(|&,然后仅打印列。

答案 1 :(得分:1)

这是sed的答案-很简单,但是可以完成工作:

sed -e 's/email=//' -e 's/&id=/ /' -e 's/&name=/ /' -e 's/&surname=/ /' -e 's/&street=.*//'

审查问题,我刚刚发现您正在寻找管道分隔的输出。好吧,这是用于管道输出的稍微修改过的sed脚本:

sed -e 's/email=//' -e 's/&id=/|/' -e 's/&name=/|/' -e 's/&surname=/|/' -e 's/&street=.*//'