
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';'