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


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

1234567890 
1234567890 
123456789X 
0974385495 

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

123456789X 

Полученный результат следующей командой:

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

12345678901234567890123456789X0974385495
0
20.06.2017, 08:16
3 ответа

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

grep '[[:alpha:]]' distinct_file.txt
0
28.01.2020, 02:33

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

< 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:]]*'
1
28.01.2020, 02:33

С 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
1
28.01.2020, 02:33

Теги

Похожие вопросы