find . -type d -name nfs -exec mountpoint {} \; | grep not
проверит все папки с именем 'nfs', если они смонтированы
grep
работает со строками, поэтому "вы не можете этого сделать" ; но, когда мне нужно сделать что-то подобное на bash
, а я не хочу / не могу использовать perl
или подобное (или, честно, я просто хочу использоватьgrep
)Я делаю что-то вроде этого:
tr '\n' '\a' < <filename> | grep --only-matching Hello$'\a'I$'\a'am$'\a'here\ right\ now | tr '\a' '\n'
tr
переводит символы; здесь вы «переводите» новые строки в bell ascii char [шестнадцатеричный код \x07 или '\ a'] , затем обрабатываете это наgrep
(обратите внимание, что grep
видит длинную однострочную строку с символами bell ascii вместо новой строки символов ), а затем, возвращаясь к «нормальному», переводя bell ascii chars to newline .
нет необходимости использовать bell ascii char:вы можете использовать любой char, которого нет в вашем файле; в моем случае просто мне нравится число семь и, как правило, текстовый файл не содержит символов bell ascii
BTW :$'\a'
— этоBash ANSI -Цитата C
Попробуйте это:
sed -e '1h;2,$H;$!d;g' -re 's/(.*)(H\w+\n)(.*w\n)(.*)/\2\3/' test.txt
С файлом test.txt, содержащим:
Something
Hello
I
am
here right now
Something else
Проверено с помощью sed (GNU sed) 4.4
. Вы можете установить GNU sed на macOS через Homebrew sed по умолчанию в macOS — BSD sed, некоторые параметры немного отличаются.
Ура,