Как заменить внутренние двойные кавычки в одном поле канала -разделенного файла

Хорошо, я нашел свою ошибку. Псевдоним не является узлом. Это собственность.

Это работает:

/delete-property/ i2c0;
-2
07.10.2020, 15:36
2 ответа

Глядя на это с другой точки зрения,

123|"xy"|11|"sb" sri"|13|"bb" 
123|"xy"|11|"rss" "NIL"|13|"bb"

вы хотите извлечь четвертый канал -поле с разделителями:

cut -f4 -d'|' < test

"sb" sri"
"rss" "NIL"

Тогда внутри поля могут быть кавычки, поэтому избавьтесь от внешней пары

cut -f4 -d'|' < test | sed -e 's/^"\(.*\)"/\1/g'

sb" sri
rss" "NIL

замените все оставшиеся кавычки знаком W

cut -f4 -d'|' < test | sed -e 's/^"\(.*\)"/\1/g' | tr '"' 'W'

sbW sri
rssW WNIL

и, наконец, замените внешние кавычки

cut -f4 -d'|' < test | sed -e 's/^"\(.*\)"/\1/g' | tr '"' 'W' \
    | sed -e 's/\(.*\)/"\1"/g'

"sbW sri"
"rssW WNIL"
2
18.03.2021, 22:59

Похоже, вы хотите заменить «внутренние двойные -кавычки» из 4-го поля вашего файла с разделителями -на W. Это можно сделать с помощьюawk:

awk 'BEGIN{FS=OFS="|"} {gsub(/^\"|\"$/,"",$4);gsub(/\"/,"W",$4);$4="\"" $4 "\""}1' hello.txt

Эта команда сначала удалит открывающую и закрывающую двойные -кавычки из 4-го поля, затем заменит оставшиеся на Wи повторно -добавит вокруг текста одну открывающую и одну закрывающую двойную -кавычки..

Результат:

123|"xy"|11|"sbW sri"|13|"bb" 
123|"xy"|11|"rssW WNIL"|13|"bb"
1
18.03.2021, 22:59

Теги

Похожие вопросы