Вопрос
Есть ли простой способ объединить поля в 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|/'
Не связан с StackOverflow