不久前我开始了我的技术冒险 - 正如你从问题中感受到的那样 - 但现在我被困住了,因为经过几乎一整天的思考和搜索,我不知道我的问题的正确解决方案。

简而言之,我得到了一个包含电子邮件和名字的千行文件。问题是我真的需要另一列,仅包含域名本身,例如在电子邮件地址旁边。请看下面的例子。

这是它现在的样子:

[email protected]|:|乔治|-|
任何东西@another.tld|:|托马斯|-|
第三@address.tld|:|kelly|-|

我想看起来像:

[email protected]|:|nothing.tld|--|george|-|
任何东西@another.tld|:|another.tld|--|托马斯|-|
第三@address.tld|:|address.tld|--|kelly|-|

我最好的猜测是使用 sed 启动该过程并提取域,但是如何将提取的域粘贴到我卡住的同一行中。

sed -e 's/.*@\(.*\)|:|*/\1/'

如果您还可以给出一个简短的解释以及一个真正有用的解决方案。

任何帮助表示赞赏。

最佳答案

如果您在名为 file1 的文件中有以下数据,

 [email protected]|:|george|-|
 [email protected]|:|thomas|-|
 [email protected]|:|kelly|-|

您可以使用 :@ 作为分隔符并在其后使用 awk 添加数据,然后将其保存到新文件中,
awk -F '[@:]' '{ print $1"@"$2 ":|" $2"--" $3 }' file1 > file2

以上命令将以下数据保存在名为 file2 的文件中,
[email protected]|:|nothing.tld|--|george|-|
[email protected]|:|another.tld|--|thomas|-|
[email protected]|:|address.tld|--|kelly|-|

关于linux - 提取域然后使用 sed/awk/grep/perl 粘贴到同一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50093390/

10-12 00:44