不久前我开始了我的技术冒险 - 正如你从问题中感受到的那样 - 但现在我被困住了,因为经过几乎一整天的思考和搜索,我不知道我的问题的正确解决方案。
简而言之,我得到了一个包含电子邮件和名字的千行文件。问题是我真的需要另一列,仅包含域名本身,例如在电子邮件地址旁边。请看下面的例子。
这是它现在的样子:
[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/