Ответ 1
Несколько общих советов (помимо проблемы с завершением строки DOS):
cat
предназначен для конкатенации файлов, это не единственный инструмент, который может читать файлы! Если команда не читает файлы, используйте перенаправление, например command < file
.
Вы можете установить разделитель полей с опцией -F
, чтобы вместо:
cat foo | awk 'BEGIN{FS="|"} {print $2 " " $1}'
Try:
awk -F'|' '{print $2" "$1}' foo
Это выведет:
com.emailclient.account [email protected]
com.socialsite.auth.accoun [email protected]
Чтобы получить желаемый результат, вы можете делать множество вещей. Я бы, вероятно, split()
второе поле:
awk -F'|' '{split($2,a,".");print a[2]" "$1}' file
emailclient [email protected]
socialsite [email protected]
Наконец, чтобы первый символ, преобразованный в верхний регистр, немного болел в awk
, поскольку у вас нет хорошей встроенной функции ucfirst()
:
awk -F'|' '{split($2,a,".");print toupper(substr(a[2],1,1)) substr(a[2],2),$1}' file
Emailclient [email protected]
Socialsite [email protected]
Если вам нужно что-то более сжатое (хотя вы отказываетесь от подпроцесса), вы можете сделать:
awk -F'|' '{split($2,a,".");print a[2]" "$1}' file | sed 's/^./\U&/'
Emailclient [email protected]
Socialsite [email protected]