Хорошо, я нашел свою ошибку. Псевдоним не является узлом. Это собственность.
Это работает:
/delete-property/ i2c0;
Глядя на это с другой точки зрения,
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"
Похоже, вы хотите заменить «внутренние двойные -кавычки» из 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"