Привет, есть разные команды, которые могут помочь вам в последней строке, попробуйте это ..
<grep command> | tail -1
или
awk '/result/ { save=$0 }END{ print save }' filename
Sed не подходит для этого. Я думаю, что для достижения описанного выше могут потребоваться некоторые расширенные функции. Вот он-лайн perl, который заменяет любое количество двойных запятых в двойных кавычках на <пробел> | <пробел>
.
$ echo '012345,"[ThinkPadT2/3Gband,Mac,Apple]",Lenovo,"iPhone3G,A1241"' | perl -pe 's/,(?!(?:"[^"]*"|[^"])*$)/ | /g'
012345,"[ThinkPadT2/3Gband | Mac | Apple]",Lenovo,"iPhone3G | A1241"
Вы можете попробовать что-то вроде этого:
$ cat filename
012345,"[ThinkPadT2/3Gband,Mac]",Lenovo,"iPhone3G,A1241"
$ cat filename | sed -E 's:([A-Z,a-z]),([A-Z,a-z]):\1|\2:g'
012345,"[ThinkPadT2/3Gband|Mac]",Lenovo,"iPhone3G|A1241"
Это стандартная процедура, чтобы сделать sed
не жадным и с обратной ссылкой подсказкой для подстроки (строк) в скобках ()
sed 's/\(\"[^",]\{1,\}\),\([^",]\{1,\}\"\)/\1 | \2/g'
Или для GNU sed
sed -r 's/("[^",]+),([^",]+")/\1 | \2/g'