Удалить все до последнего «:» в терминале

У меня есть миллионы строк с этими двумя форматами в одном объединенном файле.

hash:salt:password hash:password hash:hash 

То, что я хочу, это просто сохранить пароль, затем удалить дубликаты и после удаления дубликатов удалить все строки, содержащие строку.

Образец файла:

 695ecf9185cb3f1a415821ddd69cc6be:4e85e5:671014 695f1cc6765cac14c3478505c300ec9a::0d7b9438b5ea5d9b6883b43a656357d9775688 695f50345da6811b712ad3d08ac107cf::54dbf42fdafabe13e64c1eb7c7813e52b16188 695fe18dfdf073769841193ca98aaea3::405d98ab893b610144bf4645e6c132cb5eaf12 6960138fc7d1e2f9ec1c3df49ea72172::d7698e6198301e4a6df04d8b087a197a3d72f5 696073574b563bcfbf44a13a2848484a::9f3d22ab9249f9a05f9a7854f0ce2c6017cad2 6960a12e5357adbef3cb9df2d0ecd9c7::ca5fad391e11eb7e860bb1102528e77eb88474 6960c557ff9cc514771d3e6d855f3f8d::f3431013320c3864519b4c9269b524025bb6cf 69613e3ad5e001cdb1321012a554785e:c20954:214828 cc81a83d6bcd13b89519c45c7f5a1cfd:Refineryhotel2 696fb1bf9f806c772ac44882a28c2888:ca28a5:8561535 696fbe253ff887d5725d2438387b3bc1::60eb49f1f213fcc2f959edfec4feed89031747 696ffadc81d15371b88815c8394329a9:e5ad83:123hacker 6970031dffaac00607ce7663fa916686:4c4ba0:8109201 69706a943cc96169919476026a7de70c:ebd0af:0611314 69709651482c9e5c44c222aed4ece9aa::7a626fc07ccceb9b11c35c55941b2b5eb082c5 

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

 671014 214828 Refineryhotel2 8561535 123hacker 8109201 0611314 

2 Solutions collect form web for “Удалить все до последнего «:» в терминале”

Удалить все перед последним «:» в Терминале

Попробуй это,

 awk -F ':' '$2 != ""{print $NF}' file 671014 214828 Refineryhotel2 8561535 123hacker 8109201 0611314 
  • будет печатать только текст после последнего : если второе поле не равно нулю.

С вашими новыми примерами данных (которые не содержат дубликатов), попробуйте

 awk -F: '$2 != "" {print $3}' file 671014 214828 8561535 123hacker 8109201 0611314 

Что вы подразумеваете под «содержать строку»? Не может быть выведено из вашего образца.

Если эта линия Refineryhotel2 НЕ является артефактом (она единственная с двумя полями), попробуйте

 awk -F: '$3 == "" {print $2; next}; $2 != "" {print $3} ' file 671014 214828 Refineryhotel2 8561535 123hacker 8109201 0611314 
Interesting Posts

Изменение неустановленных расширений файлов

Как удалить возвращаемые каретки из имен каталогов?

does / может что-то вроде реального контейнера Linux существует?

Удаление инструкции по установке Debian

Как установить вывод heredoc в локальную переменную

Шифрование каталогов с помощью gpg

Не удалось найти корневое блочное устройство (в Gentoo)

Не удается установить расширения оболочки gnome

Как создать группу SOCKS?

После сопоставления Caps Lock с Escape с помощью xmodmap, как вернуть Caps Lock обратно в Caps Lock без изменения клавиши Escape?

XFS через общий ресурс iSCSI с кластером; будет ли ограждение причиной коррупции / потери данных?

Какой пакет RPM мне нужно установить, чтобы документация GObject была доступна локально на RHEL 7

Проблема с разрешением домена с запасом Debian

Как расширить команду в bash, чтобы она расширялась в зависимости от параметров?

Если вы хотите получить будущую дату, почему вы не можете просто получить текущую дату и использовать sed / awk / etc?

Linux и Unix - лучшая ОС в мире.