Как отфильтровать файл журнала для строки внутри одинарных кавычек?

  1. добавить в /etc/auto.master

     / var / autofs / Removable /etc/auto.removable --timeout = 2 
     
  2. добавить в /etc/auto.removable

     theDiskLabel -fstype = ext4, rw, gid = 1000, umask = 002: / dev / disk / by-uuid / thediskid 
     
  3. перезапустить службу autofs

     sudo service autofs restart 
     
  4. Получите доступ к вашему каталогу, вот и все!

     cd / var / autofs / remoable / theDiskLabel 
     
-1
05.04.2016, 18:04
3 ответа

Вот решение "только для sed":

sed -n 's/^.*'\''\([^'\'']*\)'\''.*$/\1/p' file

Это сводится к

  • sed -n в сочетании с опцией pв конце шаблона: печатать только подходящие строки
  • '\''- это обозначение оболочки для указания одинарной кавычки внутри строки с одинарными кавычками (аргумент 's/.../.../p')
  • поэтому шаблон ^. *'\''\([^'\']*\)'\''*$ соответствует строкам, начинающимся с любой последовательности символов (^. *), за которой следует одиночная кавычка ', последовательность символов, не являющихся одиночными кавычками ([^'\']*), за которой следует одиночная кавычка ', и, наконец, все оставшиеся символы до конца строки (.*$).
  • ([^'\']*\)заключен в парантезы, поэтому sedсохранит эту часть совпадения в переменной \1
  • Наконец, s/pattern_explained_above/\1/pзаменяет всю совпадающую строку содержимым переменной \1 (а именно, частью строки внутри одинарных кавычек) и печатает ее (опция p). Все остальные строки, не соответствующие шаблону, подавляются из-за опции -n
3
29.04.2021, 00:16

cut проще в использовании, чем писать регулярное выражение:

grep -io "static.*" logfile.txt | cut  -d "'" -f2 | sort -u

удается сделать свое дело. Он выводит:

this is of interest
this is of interest as well
2
29.04.2021, 00:16

try

awk -F\' '/static/ { if (!seen[$2]++) print $2 ;}' 

with

  • static being static string
  • !seen[$2]++ will be true first time, then false
  • -F\' use ' as separator
1
29.04.2021, 00:16

Теги

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