我正在使用以下polyline
命令来消除重复项
但是它仍然导致多次运行中重复输入
sed
sed -i '/^text1/i\value=value+1' file.txt | uniq
在这里无法消除重复的条目
答案 0 :(得分:0)
首先,当您运行sed -i
时,sed
不会向stdout输出任何内容。这就是为什么用管道输送到uniq
没用的原因。
第二,uniq
需要对输入进行排序才能起作用:
sed ... file.txt | sort | uniq > file.txt.tmp
mv file.txt.tmp file.txt
您还可以使用-u
的{{1}}标志:
sort
如果必须保留行顺序,则可以使用sed ... file.txt | sort -u > file.txt.tmp
mv file.txt.tmp file.txt
:
awk
顺便说一句,GNU awk现在提供了一种修改文件的方法:
awk 'seen[$0]++{next} /^text1/{print "value=value+1";print}' file.txt > file.txt.tmp
mv file.txt.tmp file.txt