我在不同的目录和子目录中有7个具有以下名称的文件
tag0.txt, tag1.txt, tag2.txt, tag3.txt, tag01.txt, tag02.txt and tag03.txt
其中一些文件有重复的行。如何删除duplicated rows
?请注意,每个文件中的行未排序,每个文件的长度范围为500到1000行。
非常感谢任何帮助。
谢谢
答案 0 :(得分:4)
假设你想在每个文件的基础上删除dupes ,以下内容不需要排序文件,因此不会弄乱行的顺序:
awk '!a[$0]++' infile > outfile
由于您的文件似乎位于不同的目录中,因此最简单的方法是手动运行该命令7次。如果你真的想要,你可以像这样循环:
#!/bin/sh
for file in /path/to/file1 /path/to/file2 ... /path/to/file7; do
awk '!a[$0]++' "$file" > "$file".new && \
mv "$file".new "$file"
done
答案 1 :(得分:1)
使用sort
和uniq
命令作为unix实用程序
cat "your files" | sort | uniq
答案 2 :(得分:1)
注意,确实“直接”更改文件(就地编辑)。
perl -i -ne 'print if not $seen{$ARGV}{$_}++' file1 file2 file3 ...
答案 3 :(得分:0)
bash 4.0 ++
shopt -s globstar
for file in **/tag*.txt
do
sort $file|uniq > t && mv t $file
done