Как исключить печать последнего символа - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть файл с именем sample.txt со следующим содержимым:

Tom    24
Sam    56
Bob    49

и, используя AWK / GAWK, я хочу, чтобы вывод был:

Tom:24,
Sam:56,
Bob:49

Когда я запускаю

awk '{print $1 ":"$2 "," }' sample.txt

Tom:24,
Sam:56,
Bob:49,

Он также печатает "," после 49 в последней строке.Как мне избежать этой последней запятой ","

Спасибо.

Ответы [ 4 ]

0 голосов
/ 06 марта 2019

Еще один awk

awk ' { a[NR]=$1 ":" $2 } END { for(i=1;i<NR;i++) { print a[i] "," } print a[NR] } ' 


using the given inputs

$ cat sam.txt
Tom    24
Sam    56
Bob    49

$ awk ' { a[NR]=$1 ":" $2 } END { for(i=1;i<NR;i++) { print a[i] "," } print a[NR] } ' sam.txt
Tom:24,
Sam:56,
Bob:49

$
0 голосов
/ 30 декабря 2018

Вы можете попробовать Perl

$ cat sam.txt
Tom    24
Sam    56
Bob    49

$ perl -a -ne ' $_="$F[0]:$F[1]"; print eof ? "$_\n":"$_,\n"  ' sam.txt
Tom:24,
Sam:56,
Bob:49

Если ваш файл может поместиться в памяти, тогда

$ perl -0777 -ne ' s/[ ]+/:/g; print join(",\n",split) ' sam.txt
Tom:24,
Sam:56,
Bob:49
0 голосов
/ 30 декабря 2018
$ awk '{printf "%s%s:%s", sep, $1, $2; sep=",\n"} END{print ""}' file
Tom:24,
Sam:56,
Bob:49
0 голосов
/ 30 декабря 2018
awk '{if (1 < NR) print previous ","; previous = $1 ":" $2 } END { print previous }' sample.txt

Однако awk предназначен для обработки записей.Следует избегать взаимозависимостей между записями - другой инструмент может быть лучше для вас, чем awk.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...