Я пытаюсь удалить все строки, в которых есть повторяющаяся запись первого столбца, а первый столбец короче указанной длины c. Для этого я использую приведенный ниже код.
awk -F':' '!seen[$1]++ && length($1)<=32' file-dup > file
Тестовый образец: (это делается с использованием соответствующего числа символов 10 вместо 32).
Ввод:
a:123:addf
ab:123:addf
a:123:addf
abc:123:addf
akjsalkdjalkd123:addf
abc:123:addf
afj:123:addf
aki:123:addf
aop:123:addf
aop:123:addf
akijh:123:addf
akijhkjsladjslkajdlkad:123:addf
Выход:
a:123:addf
ab:123:addf
abc:123:addf
afj:123:addf
aki:123:addf
aop:123:addf
akijh:123:addf
В основном выводятся все строки, соответствующие условию. Но если все строки соответствуют условию или нет, код возврата всегда равен 0, так как awk
успешно выполняется.
Я хочу знать, не соответствует ли какая-либо строка в файле условию или все строки выполнил условие. Как и в случае ввода, как показано ниже, я хочу вернуть другое значение или установить некоторую переменную, потому что ни одна из строк не удовлетворяет условию.
a:123:addf
ab:123:addf
abc:123:addf
afj:123:addf
aki:123:addf
aop:123:addf
akijh:123:addf
Я могу в основном проверить номера строк исходного файла и новый файл и получите ответ. но
Можно ли вернуть другой код возврата в случае, если условие не соответствует или может быть установлена переменная внутри самого awk
, если условия не выполняются?