尝试从系统日志文本文件中删除具有重复字符串的行
Mar 10 06:51:11 [http-8080-1] INFO com.MYCOMPANY.webservices.userservice.web.UserServiceController [u:2533274802474744 | 360]授权[platformI $ tformIdAndOs = 2533274802474744 | 360,userRegion = America | 360]
然后几行
Mar 10 06:52:03 [http-8080-1] INFO com.MYCOMPANY.webservices.userservice.web.UserServiceController [u:2533274802474744 | 360]授权[platformI $ tformIdAndOs = 2533274802474744 | 360,userRegion = America | 360
在u:number方面得到了相同的东西,但问题是我需要删除重复项,只留下一个,文件有多个不同的u:数字重复,并且它的长度为14,000行。
任何人都可以告诉我,我是否可以使用awk? SED?或者为这样的东西排序?删除那里有重复的某个字符串的行。
我基本上需要重复数据删除,但问题只是字符串的一小部分是指标。
任何帮助表示赞赏!感谢
答案 0 :(得分:0)
可能有更好的方法可以做到这一点,但这是我的第一次尝试:
代码将是这样的:
#!/bin/bash
touch uvalues.txt
for l in `cat file.txt`; do
uvalue=`echo "$l" | grep "u:" | cut -f2 -d':' | cut -f1 -d'|'`
#if uvalue is not empty, check it against our temp file
if [ -n "$uvalue" ]; then
existing_value=`grep "$uvalue" uvalues.txt`;
#if it is empty, it means it's not a duplicate
if [ -z "$existing_value" ]; then
echo $l >> save.txt
echo $uvalue >> uvalues.txt
fi
fi
done
rm uvalues.txt