我想从文本文件中删除重复的条目,例如:
kavitha= Tue Feb 20 14:00 19 IST 2012 (duplicate entry)
sree=Tue Jan 20 14:05 19 IST 2012
divya = Tue Jan 20 14:20 19 IST 2012
anusha=Tue Jan 20 14:45 19 IST 2012
kavitha= Tue Feb 20 14:00 19 IST 2012 (duplicate entry)
Run Code Online (Sandbox Code Playgroud)
有没有办法使用Bash脚本删除重复的条目?
期望的输出
kavitha= Tue Feb 20 14:00 19 IST 2012
sree=Tue Jan 20 14:05 19 IST 2012
divya = Tue Jan 20 14:20 19 IST 2012
anusha=Tue Jan 20 14:45 19 IST 2012
Run Code Online (Sandbox Code Playgroud)
kev*_*kev 381
sort然后你可以uniq:
$ sort -u input.txt
Run Code Online (Sandbox Code Playgroud)
或使用awk:
$ awk '!a[$0]++' input.txt
Run Code Online (Sandbox Code Playgroud)
Siv*_*ran 13
它从文件中删除重复的连续行(模拟"uniq").
保留一组重复行中的第一行,删除其余行.
sed '$!N; /^\(.*\)\n\1$/!P; D'
Run Code Online (Sandbox Code Playgroud)
类似于@kev的awk解决方案的Perl单线程:
perl -ne 'print if ! $a{$_}++' input
Run Code Online (Sandbox Code Playgroud)
此变体在比较之前删除尾随空格:
perl -lne 's/\s*$//; print if ! $a{$_}++' input
Run Code Online (Sandbox Code Playgroud)
此变体就地编辑文件:
perl -i -ne 'print if ! $a{$_}++' input
Run Code Online (Sandbox Code Playgroud)
此变体就地编辑文件,并进行备份 input.bak
perl -i.bak -ne 'print if ! $a{$_}++' input
Run Code Online (Sandbox Code Playgroud)