ile çıktı ... biçimlendirme Ben metnin bu tür var:yardımına ihtiyacım sed komutu
2016.04.10 19:24:00,044 +0300 basdahsdjashd asjd ashdjkl [{"socialSecurityNumber":"68888410106514","socialSecurityNumberCountryCode":"EE"}]
2016.04.07 14:29:09,126 +0300 jsjdgdbcgf jjsgftr kksgcxdw2 [{"socialSecurityNumber":"00299288282224","socialSecurityNumberCountryCode":"EE"}]
2016.04.05 22:01:32,005 +0300 jafhaljdhf afs ljhsdhfl adf tng-customer-id=9303801442
2016.04.05 20:44:51,003 +0300 pppcndhfgus23 ofkgjg jdghhfye uksd tng-customer-id=2875223046
ve ihtiyacım çıkış, birinci ve ikinci sütun ve socialSecurityNumber VEYA tng-müşteri kimliği (bir):
2016.04.10 19:24:00,044 "socialSecurityNumber":"68888410106514"
2016.04.07 14:29:09,126 "socialSecurityNumber":"00299288282224"
2016.04.05 22:01:32,005 tng-customer-id=9303801442
2016.04.05 20:44:51,003 tng-customer-id=2875223046
Yani sorum ... o sed komutuyla bu sorunu çözmek mümkün mü? Burada OR seçeneğine ihtiyacım var. Öncelikle, ayrı ayrı bunu denerseniz
, socialSecurityNumber bulmak, bu alın:
wsslogfetcher ~/temp/log_parser$ sed 's/\([^+]*\).*\(tng-customer-id[^ ]*\).*/\1 \2/' testfile.txt
2016.04.10 19:24:00,044 +0300 basdahsdjashd asjd ashdjkl [{"socialSecurityNumber":"68888410106514","socialSecurityNumberCountryCode":"EE"}]
2016.04.07 14:29:09,126 +0300 jsjdgdbcgf jjsgftr kksgcxdw2 [{"socialSecurityNumber":"00299288282224","socialSecurityNumberCountryCode":"EE"}]
2016.04.05 22:01:32,005 tng-customer-id=9303801442
2016.04.05 20:44:51,003 tng-customer-id=2875223046
: ikinci olarak
wsslogfetcher ~/temp/log_parser$ sed 's/\([^+]*\).*\("socialSecurityNumber"[^,]*\).*/\1 \2/' testfile.txt
2016.04.10 19:24:00,044 "socialSecurityNumber":"68888410106514"
2016.04.07 14:29:09,126 "socialSecurityNumber":"00299288282224"
2016.04.05 22:01:32,005 +0300 jafhaljdhf afs ljhsdhfl adf tng-customer-id=9303801442
2016.04.05 20:44:51,003 +0300 pppcndhfgus23 ofkgjg jdghhfye uksd tng-customer-id=2875223046
, tng-müşteri kimliği bulmak, bu alın Yani, eğer görebiliyorsanız, ilk örnekte, sosyalSecurityNumber iki son satırda bulunmazsa, sadece onları basar. İkinci örnekte aynı durum ...
Ben ile benim sed komutu complect deneyin VEYA operatör tamamen yanlıştır bu çıktıyı almak
: Ben olduğum şey ...wsslogfetcher ~/temp/log_parser$ sed 's/\([^+]*\).*\(\("socialSecurityNumber"[^,]*\).*\|\(tng-customer-id=[^ ]*\).*\)/\1 \2/' testfile.txt
2016.04.10 19:24:00,044 "socialSecurityNumber":"68888410106514","socialSecurityNumberCountryCode":"EE"}]
2016.04.07 14:29:09,126 "socialSecurityNumber":"00299288282224","socialSecurityNumberCountryCode":"EE"}]
2016.04.05 22:01:32,005 tng-customer-id=9303801442
2016.04.05 20:44:51,003 tng-customer-id=2875223046
Yani yanlış mı yapıyorsun?
Vay, çok teşekkürler! Ben sadece size bir çözüm getirdim ve: 'wsslogfetcher ~/temp/log_parser $ sed 's/\ ([^ +] * \). * \ (" SocialSecurityNumber ":" [^,] * \ | tng-customer- id = [^] * \). */\ 1 \ 2/'testfile.txt' Yani ... o da çalışıyor – sergei
@sergei, Çalıştığına sevindim. – sat