@0_O

Как заставить awk или sed не разделять подстроки с пробелами в кавычках?

Есть файл, в котором в строках могут содержаться подстроки, ограниченные двойными кавычками.
Эти подстроки могут быть как с пробелами, так и без пробелов.
awk не воспринимает кавычки и разделяет такие подстроки по пробелу.

Пример:
cat test.txt

абв "строка1" где жзик "строка 2" лмноп
бав "строка 3" где жзик "строка 4" лмноп

cat test.txt | awk '{print $1":"$3":"$4":"$6}'
абв:где:жзик:2"
бав:3":где:"строка

необходимо получить:
абв:где:жзик:лмноп
бав:где:жзик:лмноп

Прошу помощи.
  • Вопрос задан
  • 841 просмотр
Пригласить эксперта
Ответы на вопрос 3
@Tabletko
никого не трогаю, починяю примус
Как вариант, при помощи sed удалять подстроки заключённые в кавычки
Ответ написан
Комментировать
@MustDie95
Почему бы не удалить сначала лишние подстроки и потом подставить вместо пробелов нужный разделитель?

cat test.txt | sed -E 's/(["]+[а-яА-Яa-zA-Z0-9 ]+["]+)//g; s/ +/:/g'
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Можно без sed и без awk

cat test.txt | while read; do eval 'for word in '$REPLY'; do echo -n "$word"|tr " " "_"; echo -n " "; done' | cut -d " " --output-delimiter=":" -f 1,3,4,6;done
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
16 апр. 2024, в 12:48
1500 руб./за проект
16 апр. 2024, в 12:30
12000 руб./за проект
16 апр. 2024, в 12:13
10000 руб./за проект