0
输出我需要你的帮助...... 我得到了这样的文字:格式化用sed命令
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
,我需要的输出(第一和第二列和socialSecurityNumber的OR TNG-客户ID ):
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
所以问题是......有可能用sed命令解决这个问题吗?我需要OR选项。
如果我尝试单独做到这一点,首先,找到socialSecurityNumber的,我得到这个:
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-客户ID,我得到这个:
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
所以,如果你能看到,在第一个例子中,当最后两行中没有找到socialSecurityNumber时,它只是将它们打印出来。在第二个例子中,同样的情况......
当我试图编造我的sed的命令或操作我得到这个输出,这是完全错误的:
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
所以...我什么做错了?
哇,非常感谢!我只是修改了你的解决方案,得到: 'wsslogfetcher〜/ temp/log_parser $ sed's/\([^ +] * \)。* \(“socialSecurityNumber”:“[^,] * \ | tng-customer- id = [^] * \)。*/\ 1 \ 2 /'testfile.txt' 所以...它也可以。 – sergei
@sergei,很高兴工作。 – sat