Заменить строку в одинарных кавычках, разделенную запятой

Я думаю, было бы проще проверить, назван ли текущий tty как локальные консоли:

case $(tty) in 
  (/dev/tty[1-9]) PS1='console version';; 
              (*) PS1='not console version';; 
esac

Это всего лишь один из способов проверить результат; вы можете использовать grep или расширение параметра, но это показывает идею.

Вы можете дополнительно проверить $DISPLAY, но это не гарантия, и я не могу представить, что вы будете делать в командной строке, для которой потребуется среда X11.

1
25.08.2020, 14:21
1 ответ

Вероятно, самое простое решение — использовать двойные кавычки снаружи:

$ 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'
4
18.03.2021, 23:10

Теги

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