Я хочу grep smb.conf
и видеть только строки, которые не комментируются.
Я хочу grep smb.conf
и видеть только строки, которые не комментируются.
Ответы:
grep "^[^#;]" smb.conf
Первый ^
относится к началу строки, поэтому строки с комментариями, начинающимися после первого символа, не будут исключены. [^#;]
означает любой символ, который не является #
или ;
.
Другими словами, он сообщает о строках, начинающихся с любого символа, кроме #
и ;
. Это не то же самое, что сообщать о строках, которые не начинаются с #
и ;
(для которых вы будете использовать grep -v '^[#;]'
), в том смысле, что они также исключают пустые строки, но это, вероятно, предпочтительнее в этом случае, так как я сомневаюсь, что вы заботитесь о пустых строках.
Если вы хотите игнорировать начальные пустые символы, вы можете изменить его на:
grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf
или же
grep -vxE '[[:blank:]]*([#;].*)?' smb.conf
Или же
awk '$1 ~ /^[^;#]/' smb.conf
cat /etc/samba/smb.conf | grep ^[^#\;]
но все равно спасибо
cat ...|
синтаксиса !. .2 Для взбивания пустых строк И строк, содержащих только пробел, возможно, с комментариями U может использовать это:grep -v "^ *\(#.*\|\)$" < smb.conf
cat file | grep "blah"
подразумевают запуск двух двоичных файлов через fifo , в то grep "blah" <file
же время делают точно так же и привязывают file
естественно к grep STDIN
. [bash] бесполезный кот - полнофункциональный объект поиска в любой поисковой системе! -> blog.sanctum.geek.nz/useless-use-of-cat ... для примера
Vim решение:
:v/^\s*[#\n]/p
Я наткнулся на этот вопрос, пытаясь найти решение VIM самостоятельно.
*
их +
следующим образом:v/^\s+[#\n]/p
Канал к grep в ответе oliver nadj может быть устранен (при условии GNU grep
или совместимости):
grep -v "^\s*[#\;]\|^\s*$" <some_conf_file>
grep -v "^\s*[#;]" any.conf | grep -v "^\s*$"
это то, что работает для меня. игнорировать закомментированные или пустые строки, даже пробелы перед хеш-меткой или точкой с запятой
Эти примеры могут быть полезны для людей.
[user@host tmp]$ cat whitespacetest
# Line 1 is a comment with hash symbol as first char
# Line 2 is a comment with hash symbol as second char
# Line 3 is a comment with hash symbol as third char
# Line 4 is a comment with tab first, then hash
; Line 5 is a comment with tab first, then semicolon. Comment char is ;
; Line 6 is a comment with semicolon symbol as first char
[user@host tmp]$
Первый пример grep исключает строки, начинающиеся с любого количества пробелов, за которым следует символ хеша.
[user@host tmp]$ grep -v '^[[:space:]]*#' whitespacetest
; Line 5 is a comment with tab first, then semicolon. Comment char is ;
; Line 6 is a comment with semicolon symbol as first char
[user@host tmp]$
Вторая исключает строки, начинающиеся с любого количества пробелов, за которым следует символ хеша или точка с запятой.
[user@host tmp]$ grep -v '^[[:space:]]*[#;]' whitespacetest
[user@host tmp]$
Здесь я получил лучший (предполагая GNU grep
или совместимый):
grep -v '^[#;/%<]\|^\s*$' anyfile.conf
исключить для строк, которые начинаются с #;/%<
квадратных скобок, а второй фильтр после трубы - \s*$
для пустых строк.
<
или /
используются для комментариев? Я знаю много форматов conf файлов, где <
есть все, кроме комментариев. !
иногда используется как в файлах ресурсов X.
grep -v '^$\|^\s*#' temp
Это намного лучше, я получил его с https://stackoverflow.com/questions/17392869/how-to-print-a-file-exclusive-comments-and-blank-lines-using-grep-sed
Предполагается, что GNU grep
или совместимый.
;
комментария, который должен быть удален.
egrep -v "^#|^$" anyfile.txt
Эта команда позволяет получить всю информацию в файле, за исключением комментариев и пустых строк.
;
Это должно показать вам файл без тех строк, которые начинаются с #
:
grep -v "^#" filename
;
.
testparm
сделать это лучше, так как это отображает значения по умолчанию тоже.