Во-первых, когда вы запускаете sed -i
, sed
ничего не выводит на стандартный вывод.Вот почему пайпинг к uniq
бесполезен.
Во-вторых, uniq
необходимо отсортировать входные данные для работы:
sed ... file.txt | sort | uniq > file.txt.tmp
mv file.txt.tmp file.txt
Вы также можете использовать -u
флаг sort
:
sed ... file.txt | sort -u > file.txt.tmp
mv file.txt.tmp file.txt
Если порядок строк должен быть сохранен, вы можете использовать awk
:
awk 'seen[$0]++{next} /^text1/{print "value=value+1";print}' file.txt > file.txt.tmp
mv file.txt.tmp file.txt
Кстати, GNU awk поставляется сспособ изменения файлов на месте в настоящее время:
gawk -i inplace 'seen[$0]++{next} /^text1/{print "value=value+1";print}' file.txt