Левые и правые квадратные скобки, которые рассматривает по-другому sed/bash

Вы могли использовать find:

find . -maxdepth 1 -type f -exec ls -li '{}' \;

или, для получения ls- как вывод:

find . -maxdepth 1 -type f  -printf '%i %M %n %u %g %kK %Tc %p\n'

Парсинг ls плохая идея, так как она может часто вести для беспокойства.

Если Вы действительно хотите использовать ls непосредственно, Вы могли сделать это:

ls -li | gawk '$2!~/d/'

4
17.11.2014, 01:26
2 ответа

вводит класс класса символов и ] закрывает его.

Если SED видит только ] (I.e. Команда закрытия), это будет хорошо, SED предполагает, что это не специальная команда.

Используя только [ [ (без закрытия ] ) Смущает SED , поэтому он должен быть сбежен.

На боковой заметке нет необходимости в

  • G (Global) flag (Global) (только в одной строке)
  • [ в замене.

Мне удалось ваше изменение с

sed -e "s/]/']/" -e "s/\[/['/" 
6
27.01.2020, 20:51

Archemar объяснил, почему это не удалось на [, вот другой способ сделать эту конкретную замену:

$ sed "s/^./['/;s/.$/']/" file
['AAA','ACMEDEMO2','ACMEDEMO3','ACMEDEMO4','RENTCOGH','TESTENT','DORASINE','LOKAWINK','BBB']

Или, используя и , что означает "все, что только что совпало":

$ sed "s/^./&'/;s/.$/'&/" file
['AAA','ACMEDEMO2','ACMEDEMO3','ACMEDEMO4','RENTCOGH','TESTENT','DORASINE','LOKAWINK','BBB']
1
27.01.2020, 20:51

Теги

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