как использовать \ n (и) \ n в качестве разделителя в awk

Пара вопросов:

  • ] указывает на конец аргументов для [ (test), и это должен быть последний аргумент; у вас есть пара ]s, что неправильно; предположительно вы хотели использовать:

    if [ $( file -b $i ) == "directory" ]
    
  • Если бы вы использовали вышеприведенное, то получили бы bash: [: слишком много аргументов], потому что разделение слов было бы сделано на выходе расширения переменной ($i), а затем подстановка команды, $() (команда file) и [ увидит несколько слов перед =, что приведет к сообщению об ошибке. Вам необходимо заключить в кавычки расширение переменной и подстановку команд:

    [ "$(file -b "$1")" == "directory" ]
    

В качестве примечания, вы должны использовать ключевое слово bash [[], а не [, поскольку первое будет обрабатывать разделение слов (и расширение имени пути) за вас.

1
23.06.2016, 12:35
2 ответа

Я использовал комбинацию grep и sed для достижения вашей цели после \ n (и до) \ n

grep -o '\\n(.*)\\n' test.txt|sed -e 's/\\n//g'

Пример вывода

(T.a = 1)
(public.cde.newcol = \'013\')
1
27.01.2020, 23:35

Вы можете сделать это с помощью sed следующим образом:

sed -e 's,\\n(.*,,' unset

или с помощью awk , вам нужно сделать много убегающих

awk -F'\\\\n\\(' '{print $1}' unset

, чтобы получить право побега как для \ до n , так и для защиты от специальной интерпретации (

1
27.01.2020, 23:35

Теги

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