Как печатать только буквенно-цифровую строку из моего файла?


Вот мой файл. Из этого файла мне нужно печатать только буквенно-цифровую строку с помощью команд linux / unix?

1234567890 1234567890 123456789X 0974385495 

Ожидаемый результат:

 123456789X 

Получается вывод следующей командой:

 $ tr -cd '[:alnum:]' < distinct_file.txt 12345678901234567890123456789X0974385495 

Этот фильтр дает все строки, у которых есть хотя бы один альфа-символ:

 grep '[[:alpha:]]' distinct_file.txt 

Если вам нужны строки, содержащие хотя бы одну цифру и по крайней мере один алфавитный символ, тогда:

 < file grep '[[:digit:]]' | grep '[[:alpha:]]' 

Если, кроме того, вы хотите, чтобы все символы были alnums, вы можете связать это с grep -v '[^[:alnum:]]' (удалить строки ( -v ), которые содержат по крайней мере один не-alnum), или в команде grep :

 < file grep -xe '[[:alnum:]]*[[:digit:]][[:alnum:]]*[[:alpha:]][[:alnum:]]*' \ -e '[[:alnum:]]*[[:alpha:]][[:alnum:]]*[[:digit:]][[:alnum:]]*' 

С grep : сделайте OR-ing ( | ) любого алфавита ( [:alpha:] ), затем в любое время следуйте любой цифрой ( [:digit:] ) и наоборот:

 grep -E '[[:alpha:]].*[[:digit:]]|[[:digit:]].*[[:alpha:]]' 

Пример:

 % cat file.txt 1234567890 1234567890 123456789X 0974385495 % grep -E '[[:alpha:]].*[[:digit:]]|[[:digit:]].*[[:alpha:]]' file.txt 123456789X