Попытка присвоить псевдоним длинной команде дает мне только ее часть

Я предполагаю, что вы также хотите оставить символы кавычек в конце строки нетронутыми (как показано в вашем примере).  Вы можете сделать это с помощью

sed 's/\([^,]\)"\([^,]\)/\1^"\2/g'

Это ищет строки из трех последовательных символов следующим образом:

  1. Символ, отличный от запятой (,),
  2. Двойная кавычка ("), и
  3. Символ, отличный от запятой,

и заменяет их на

  1. Первый символ,
  2. ^", и
  3. Третий символ.

Это не будет работать с несколькими последовательными символами кавычек; например,

…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""
                     ↑                                               ↑   ↑    ↑          ↑
2
26.08.2016, 01:34
2 ответа

escape, равный

$ alias ll="ls -la | awk '\$5 > 2'"
$ alias|grep ll                                       
ll='ls -la | awk '\''$5 > 2'\'
0
27.01.2020, 22:19

Просто используйте функцию оболочки, если ваш псевдоним сложнее, чем простая команда:

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 `?

1
27.01.2020, 22:19

Теги

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