Я думаю, было бы проще проверить, назван ли текущий tty как локальные консоли:
case $(tty) in
(/dev/tty[1-9]) PS1='console version';;
(*) PS1='not console version';;
esac
Это всего лишь один из способов проверить результат; вы можете использовать grep или расширение параметра, но это показывает идею.
Вы можете дополнительно проверить $DISPLAY
, но это не гарантия, и я не могу представить, что вы будете делать в командной строке, для которой потребуется среда X11.
Вероятно, самое простое решение — использовать двойные кавычки снаружи:
$ echo "'1','2','3,3','4'" | sed "s/'[^']*'/'NEW'/3"
'1','2','NEW','4'
В противном случае последовательность, подобная '\''
, может использоваться для закрытия и повторного -открытия одинарных кавычек вокруг экранированной литеральной кавычки:
$ echo "'1','2','3,3','4'" | sed 's/'\''[^'\'']*'\''/'\''NEW'\''/3'
'1','2','NEW','4'