изменить
cd $CT_PATH && cap -q -s instance=$instance mode=quiet diagnostics:all
cap production deploy
cap sales-demo deploy
от до
cd $CT_PATH
[[ $1 = rerun ]] || cap -q -s instance=$instance mode=quiet diagnostics:all
cap production deploy
cap sales-demo deploy
awk '!seen[$4, $5]++ > 1' DemoDATA.txt
почти правильно, за исключением того, что поля в файле разделены символом |
, и что поля, в которых вы должны искать фамилию и дату рождения, — это поля 5, 6 и 7. Вы также не нужно сравнивать с 1 (Я понимаю, почему вы это делаете, но сравнение никогда не будет верным ).
Исправлено:
awk -F '|' '!seen[$5, $6, $7]++' DemoDATA.txt
Однако при этом будут выведены только дубликаты, а не исходная строка. Для этого вам нужно будет сохранить весь файл в памяти во время его разбора...
... это то, что делают ответы на " Как мне напечатать все строки файла с повторяющимися значениями в определенном столбце " (или нет, если они умны,некоторые из них ).
Как предложил Кусалананда, сохранение всего файла в памяти:
awk -F'|' '
{
key = $5 FS $6 FS $7
count[key]++
data[key] = data[key] (count[key] == 1 ? "" : ORS) $0
}
END { for (key in count) if (count[key] > 1) print data[key] }
' DemoDATA.txt
или
perl -F'\|' -ane '
$key = join "|", @F[4..6];
push @{$data{$key}}, $_;
} END {
print @{$data{$_}} for grep {@{$data{$_}} > 1} keys %data;
' DemoDATA.txt