Вопрос

Есть ли простой способ объединить поля в awk?В частности, у меня есть такие строки:

1,2,some text
3,4,some text, but it has commas in it, annoyingly

Я хочу извлечь два числа в качестве первых двух полей, но затем я хочу, чтобы весь текст (запятые и все такое) был третьим полем.Есть ли способ сделать это?

Мой основной вызов awk был таким:

awk -F\, '{print $1"|"$2"|"$3}' file.txt

Это отлично работает для первой строки, но останавливается на запятой в тексте во второй строке.

Это было полезно?

Решение

Может быть:

awk '{for (i=0;i<2;i++) sub(",", "|", $0); print}' file.txt

Другие советы

Для этого вы можете использовать sed.

cat file.txt | sed 's/\(.?*\),\(.?*\),/\1|\2|/'
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top