Разделитель строк после использования AWK

Разделитель строк после использования AWK
awk -F ';' '{print $1}' FileName

Я использую эту команду для печати первого столбца файла, разделенного точкой с запятой.

Теперь мне нужно перебрать вывод команды выше. Если мой вывод

0
1
2

Мне нужно пройтись по каждой записи и указать итерацию, какой разделитель записей будет в моем выводе.

Есть ли способ распечатать вывод, как показано ниже?

0;1;2

Так что я могу повторить, сказав, что разделитель — это ;

решение1

чтобы избежать завершающей точки с запятой

 awk -F\; 'NR>1 { printf ";" ;} {printf "%s",$1;} END {printf "\n"} '
  • printfне печатать перевод строки
  • NR>1печатать только после первой строки
  • ENDпечатать после последней строки.

решение2

awkвыводит значение ORS(разделитель выходных записей) в конце каждого printоператора. По умолчанию это новая строка, но вы можете изменить это:

$ cat foo.txt
0;3;6
1;4;7
2;5;8
$ awk -vORS=';' -F';' '{print $1} END {printf "\n"}'  foo.txt
0;1;2;

Я добавил, END {printf "\n"}чтобы получить новую строку в конце вывода.

решение3

Вы также можете использовать coreutils:

<foo.txt cut -d';' -f1 | paste -sd';'

Связанный контент