Преобразование данных из LDIF-файла в CSV

Вы должны сделать это самостоятельно: эта команда sed экранировала любые не буквенно-цифровые символы, что и делает quotemeta (IIRC)

str="abc.def.ghi"
escaped=$(sed 's/[^[:alnum:]]/\\&/g' <<< "$str")

echo "$escaped"    # => abc\.def\.ghi
  1. мы ожидаем совпадения, потому что исходная строка используется как регулярное выражение

     $ echo "foo bar abc-def-ghi baz" | grep "$ str" 
    foo bar abc-def-ghi baz 
     
  2. мы ожидаем, что это не будет соответствовать, потому что оно использует экранированную строку.

     $ echo "foo bar abc-def-ghi baz" | grep "$ escaped" 
     $ echo $? 
    1 
     
  3. мы ожидаем совпадения, потому что он использует экранированную строку.

     $ echo "foo bar abc.def.ghi baz" | grep "$ escaped" 
    foo bar abc.def.ghi baz 
     
1
19.07.2018, 01:14
1 ответ

Причина, по которой вы не получаете выходные данные, заключается в том, что wc -lпотребляет все выходные данные. Вы можете использовать teeв сочетании с подстановкой процесса, чтобы получить awkдля вывода на консоль, а также прочитатьwc:

inotifywait --format="%w%f" -rm /var/log/apache2/ | gawk '{ print }' | tee >(wc -l)

Это все еще немного проблематично, так как inotifywait— это команда, которая никогда не завершается, но wc -lне печатает вывод, пока не прочитает все данные, в данном случае, когда канал закрывается. Вы можете сделать свой подсчет прямо вawk:

inotifywait --format="%w%f" -rm /var/log/apache2/ | gawk 'BEGIN { total=0 } { print; total++; print total } END { print "final total: " total }'
2
27.01.2020, 23:31

Теги

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