Вот формат данных, с которым я работаю.
jmontgomery:Janet:Montgomery:(312)213-9876:JanetMontgomery@live.com
gstefani:Gwen:Stefani:(123)456-7890:GwenStefani@compuserv.edu
linusT:Linus:Torvadis:(987)654-3210:ltoradis@linux.org
tux:Arch:Linux:(314)921-3071:arch1@archlinux.org
Вот вывод, который я хочу.
dn: uid=jmontgomery email=JanetMontgomery@live.com domain=JanetMontgomery@live.com
cn:Janet Montgomery
sn:Montgomery
telephoneNumber:(312)213-9876
dn: uid=gstefani email=GwenStefani@compuserv.edu domain=GwenStefani@compuserv.edu
cn:Gwen Stefani
sn:Stefani
telephoneNumber:(123)456-7890
dn: uid=linusT email=ltoradis@linux.org domain=ltoradis@linux.org
cn:Linus Torvadis
sn:Torvadis
telephoneNumber:(987)654-3210
dn: uid=tux email=arch1@archlinux.org domain=arch1@archlinux.org
cn:Arch Linux
sn:Linux
telephoneNumber:(314)921-3071
И мой сценарий:
BEGIN { FS=":"; ORS="\n\n" }
{ print "dn: uid="$1, "email="$5, "domain="$5 "\n" "cn:"$2,$3 "\n" \
"sn:"$3 "\n" "telephoneNumber:"$4 }
END { print "ALL DONE" }
Я хочу поместить только домен адресов электронной почты, где "domain =" $ 5. Я хотел бы использовать расширение параметра bash, такое как
"${$5##*@}"
Но это не позволит мне сделать это. Я даже пытался изменить FS с FS = ':' на FS = '@', но как я могу сделать это только для адреса электронной почты и только после того, как он уже был обработан один раз. Я не против использования простой команды bash, такой как [cut -f2 -d "@"], но как я могу выполнить это внутри сценария awk. Надеюсь, я все правильно объяснил. Спасибо