у меня такой файл
A 1,2,3,4
B 1
C 1,2
Я хотел бы получить с помощью awk этот вывод:
A 1
A 2
A 3
A 4
B 1
C 1
C 2
C 3
пробовал код:
sed 's/,/\n&/g' file
Любая идея с awk?
На самом деле, я пытался использовать sed 's/,/\n&/g' , но не получил того, что хотел.
Конечно, спасибо за то, что показали свои усилия, пожалуйста, добавьте их в свой вопрос в ТЭГАХ КОДА.
Не могли бы вы попробовать следовать, используя концепцию разделения нескольких полей, написанную и протестированную с показанными примерами в GNU awk
.
awk 'BEGIN{FS = "[ ,]"} {for(i=2;i<=NF;i++){print $1,$i}}' Input_file
2-е решение: разделение 2-го значения поля.
awk '{num=split($2,arr,",");for(i=1;i<=num;i++){print $1,arr[i]}}' Input_file
Хм:
$ awk '{gsub(/,/,ORS $1 OFS)}1' file
Выход:
A 1
A 2
A 3
A 4
B 1
C 1
C 2
И если вы действительно хотите, чтобы ЭТО выводилось из ЭТОГО ввода, вам нужно добавить END{print "C 3"}
в конце...
Изменить Пожалуйста, смотрите комментарий @EdMorton для ловушки.
Просто имейте в виду, что это не удастся, если $1
будет содержать &
.
Пожалуйста, добавьте свои усилия в виде кода в свой вопрос, который настоятельно рекомендуется на SO, спасибо.