Вот мой файл .Из этого файла мне нужно вывести только буквенно-цифровую строку, используя команды linux/unix?
1234567890
1234567890
123456789X
0974385495
Ожидаемый результат:
123456789X
Полученный результат следующей командой:
$ tr -cd '[:alnum:]' < distinct_file.txt
12345678901234567890123456789X0974385495
Этот фильтр выдает все строки, содержащие хотя бы один буквенный символ:
grep '[[:alpha:]]' distinct_file.txt
Если вы хотите, чтобы строки содержали хотя бы одну цифру и хотя бы один буквенный символ, то:
< file grep '[[:digit:]]' | grep '[[:alpha:]]'
Если, кроме того, вы хотите, чтобы все символы были alnum, вы можете направить указанное выше в grep - v '[^[:alnum:]]'
(удалите строки (-v
), содержащие хотя бы один не-alnum), или в одной команде grep
:
< file grep -xe '[[:alnum:]]*[[:digit:]][[:alnum:]]*[[:alpha:]][[:alnum:]]*' \
-e '[[:alnum:]]*[[:alpha:]][[:alnum:]]*[[:digit:]][[:alnum:]]*'
С grep
: выполните операцию ИЛИ (|
) любого алфавита ([:alpha:]
), после чего в любое время следует любая цифра ([:digit:]
), и наоборот:
grep -E '[[:alpha:]].*[[:digit:]]|[[:digit:]].*[[:alpha:]]'
Пример:
% cat file.txt
1234567890
1234567890
123456789X
0974385495
% grep -E '[[:alpha:]].*[[:digit:]]|[[:digit:]].*[[:alpha:]]' file.txt
123456789X