No tienes una puerta de enlace predeterminada:
ip r a default via 192.168.43.1
Ni resolver, ya que -Supongo que no tiene un servicio de DNS en ejecución en 127.0.1.1:
echo nameserver 8.8.8.8 >> /etc/resolv.conf
Попробуйте это,
awk -F '@' '{print $0"|"$NF}' file
TEST|1234|john.doe@gmail.com|gmail.com
TEST|4533|jeffp12@yahoo.com|yahoo.com
TEST|9030|indoep13@gmx.com|gmx.com
TEST|0903|ramdpe23@gmail.com|gmail.com
Пробовал с нижеприведенным скриптом
for i in `cat o.txt`; do y=`echo $i |awk -F "|" '{print $NF}'| awk -F "@" '{print $NF}'`; echo $i | awk -v y="$y" '{print $0"|"y}'; done
выход
TEST|1234|john.doe@gmail.com|gmail.com
TEST|4533|jeffp12@yahoo.com|yahoo.com
TEST|9030|indoep13@gmx.com|gmx.com
TEST|0903|ramdpe23@gmail.com|gmail.com
Использованиеsed
:
$ sed 's/@\(.*\)/&|\1/' file
TEST|1234|john.doe@gmail.com|gmail.com
TEST|4533|jeffp12@yahoo.com|yahoo.com
TEST|9030|indoep13@gmx.com|gmx.com
TEST|0903|ramdpe23@gmail.com|gmail.com
Это будет соответствовать первому символу @
в каждой строке и захватывать все после него с помощью группы захвата. Совпадающий текст будет заменен самим собой, за которым следует захваченный текст с символом |
в -между ними.
Если ваш файл является текстовым файлом DOS (, как указано в некоторых комментариях ), то вы можете выполнить преобразование в текстовый файл Unix одной и той же командой:
$ sed -e 's/[[:cntrl:]]$//' -e 's/@\(.*\)/&|\1/' file
TEST|1234|john.doe@gmail.com|gmail.com
TEST|4533|jeffp12@yahoo.com|yahoo.com
TEST|9030|indoep13@gmx.com|gmx.com
TEST|0903|ramdpe23@gmail.com|gmail.com
Вторая замена такая же, как и раньше, но первая удалит любой управляющий символ в самом конце строки (это удалит символ возврата каретки в конце каждой строки, если он есть ). Вывод этой последней команды будет текстовым документом Unix независимо от того, был ли исходный файл текстовым файлом DOS или Unix.