Если вы хотите удалить все дубликаты (включая повторяющиеся пустые строки)
awk '{if ($1 in a) next; a[$1]=$0; print}' test.txt
Если вы хотите сохранить повторяющиеся пустые строки
awk '/^$/ {print; next} {if ($1 in a) next; a[$1]=$0; print}' test.txt
set --
while [ "$(($#>5))" -eq "-${#status}" ]
do "test"; ${status:+":"} sleep 3
set '' "$@"
done
Если вы тестируете дополнением, вы часто можете сделать намного больше с одним тестом.
Можно избежать двойного-Проверьте $статус
, сделав так:
for i in {1..5}
do
"doMyTest" #it fills a variables "status" (but can unfortunately fails)
if [ -n "$status" ]; then #if status is filled then we can leave the loop
break
elif [ $i -eq 5 ]; then
exit 1 #all the tests failed, exiting
fi
sleep 3 #else wait some time before doing another try
done
Мой принятый ответ по SO: Если вы хотите увидеть сбой только тогда, когда все тесты проваливаются? Когда вы можете пропустить другие тесты при успешном выполнении одного из них, вы можете использовать
test1 || sleep 3 && \
test2 || sleep 3 && \
test3 || sleep 3 && \
test4 || sleep 3 && \
test5 || exit 1