如何交换由反斜杠分隔的两个字段并输出由 at 符号分隔的字段?

如何交换由反斜杠分隔的两个字段并输出由 at 符号分隔的字段?

原始文件包含以下格式的电子邮件地址:

domain.com\first.lastname

我曾经用sed符号替换反斜杠@

我尝试了各种建议来交换domain.comfirst.lastname字段。

sed 's/\(.*\) \@ \(.*\)/\2 - \1/' memberfile
sed -e 's/\(.*\)\s\(.*\)/\2 \1/' memberfile
sed -r 's/([a-zA-Z0-9]+) \- ([a-zA-Z0-9])*/\2 \- \1/' memberfile

以上所有内容都只是显示[email protected]...我对 sed 很陌生!

答案1

尝试这个:

sed 's/\(.*\)\\\(.*\)/\2@\1/' memberfile

这假设文件仍采用原始的斜杠分隔格式。如果它是@分隔的格式,请尝试:

sed 's/\(.*\)@\(.*\)/\2@\1/' memberfile

答案2

sed没有/regex 的其他方式:

awk -F\\ '{print $2"@"$1}' memberfile

或者

cut -d\\ -f1 memberfile | paste -d@ memberfile - | cut -d\\ -f2

相关内容