В Bash вы можете извлечь первый символ, используя расширение параметра :
${parameter:offset:length}
Пример:
$ var=901.32.02
$ first_char="${var:0:1}"
$ echo "${first_char}"
9
Используйте класс символов [[:alnum:]]
с одним или несколькими вхождениями.
grep 'Object Name:\|manual_encdomain:\|comments: [[:alnum:]]\+' in
Вы можете использовать [0-9A-Za-z]
, которому соответствует класс символов [[:alnum:]]
.
Или используйте реверс grep -v...
с классом символов [[:space:]]
:
grep -v 'comments:[[:space:]]*$' in
Также обратите внимание, что grep
сам может читать из входного файла, не требуя дополнительного использования cat file |...
.
Предполагая, что вы имеете в виду , если среди символов, следующих за ним, есть хотя бы один буквенно-цифровой символ , это будет:
<file grep -E 'Object Name:|manual_encdomain:|comments:.*[[:alnum:]]'
Это comments:
, за которым следует любое число(*
)любого символа (.
), за которым следует буквенно-цифровой символ (, или вы можете использовать [^[:space:]]
вместо [[:alnum:]]
для любого символа, кроме пробела ).
Обратите внимание, что \|
не является стандартным/портативным. Чередование — это особенность стандартных расширенных регулярных выражений, которая grep
понимается с-E
(стандартно ).
Вам понадобится cat
, если вы хотите объединить несколько файлов. Оболочка может открыть file
, чтобы сделать его прямым grep
стандартным вводом (, а не каналом ), как указано выше, или вы даже можете передать имя файла в качестве аргумента grep
для grep
для открой и прочитай сам.