Я предполагаю, что вы также хотите оставить символы кавычек в конце строки нетронутыми (как показано в вашем примере). Вы можете сделать это с помощью
sed 's/\([^,]\)"\([^,]\)/\1^"\2/g'
Это ищет строки из трех последовательных символов следующим образом:
,
),"
), ии заменяет их на
^"
, иЭто не будет работать с несколькими последовательными символами кавычек; например,
…200,"Purchase at store named "" on Tuesday"
P.S. Знаете ли вы, что ваш пример содержит несбалансированные кавычки?
"Comment on Invoice: "Customer X purchased item Z from store C named "Abc" on "03/04/2016""
↑ ↑ ↑ ↑ ↑
escape, равный
$ alias ll="ls -la | awk '\$5 > 2'"
$ alias|grep ll
ll='ls -la | awk '\''$5 > 2'\'
Просто используйте функцию оболочки, если ваш псевдоним сложнее, чем простая команда:
lz () {
ls -la | awk '$5 > 2'
}
... или найдите более простую команду, подходящую в качестве псевдонима:
alias lz='find. -maxdepth 1 -size +2c -ls'
Руководство bash
содержит утверждение
For almost every purpose, aliases are superseded by shell functions.
Связано:Почему *не *разбор `ls `?