Параметр awk split char

файл:

BASH.NIR SH.ABI 

Я хочу, чтобы awk покажет:

 User is NIR, SHELL is BASH User is ABI, SHELL is SH 

Я не знаю, как разбить параметр на char. Идея такова:

 cat file.txt | awk '{print "User is " afterDot($1) ", SHELL is " beforeDot($1)}' 

2 Solutions collect form web for “Параметр awk split char”

Вы можете использовать строковые функции в awk .

 $ (echo BASH.NIR; echo SH.ABI FOOBAR) | awk '{p=index($1,".");print "User is", substr($1,p+1) ", SHELL IS", substr($1,0,p-1)}' User is NIR, SHELL IS BASH User is ABI, SHELL IS SH 

Функция index возвращает позицию найденного символа (в данном случае – точку). И strstr вернет подстроку. Мы используем p+1 и p-1 чтобы не включать точку.

Для получения дополнительной информации см. Раздел «Строковые функции» страницы awk manpage.

Вы можете просто использовать . как разделитель полей:

 awk -F. '{ print "User is " $2 ", SHELL is " $1 }' file.txt 
  • Bash для сопоставления двух переменных для разницы во времени
  • Как я могу сказать awk, я хочу, чтобы второй продолжался, а третий - последним токенам из строки с разделителями табуляции?
  • Найдите строку в файле и переименуйте несколько файлов в результаты
  • Почему поля, не разделенные пробелом на выходе этого примера?
  • выходное содержание во втором случае
  • как сделать файл с AWK из разных строк
  • Как повернуть данные по awk в сценарии оболочки unix?
  • sed или awk: удалить строку, которая начинается с числа и заканчивается на rpm
  • Соответствие значений и суммы печати на основе повторяемости в awk
  • Как запустить awk для некоторого количества строк.?
  • Найдите (и разделите) общие начальные пробелы из файла / трубы
  • Linux и Unix - лучшая ОС в мире.