백슬래시로 구분된 두 필드를 교환하고 at 기호로 구분된 필드를 출력하는 방법은 무엇입니까?

백슬래시로 구분된 두 필드를 교환하고 at 기호로 구분된 필드를 출력하는 방법은 무엇입니까?

원본 파일에는 다음 형식의 이메일 주소가 포함되어 있습니다.

domain.com\first.lastname

sed나는 백슬래시를 기호로 바꾸 곤 했습니다 @.

domain.com및 필드를 교환하기 위해 다양한 제안을 시도했습니다 first.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

관련 정보