Можно попробовать следующее, для подтверждения после удаления каждого файла сначала:
$ find /path/to/dir -type f -name "*.txt" -empty -ok rm {} \;
или если Вы чувствуете себя больше уверенно:
$ find /path/to/dir -type f -name "*.txt" -empty -exec rm {} \;
Вы могли получить список уникальных слов. И затем, согласующие отрезки длинной линии были бы строками, все слова которых уникальны:
tr -cs 'A-Z' '[\n*]' < words.txt |
sort |
uniq -u |
perl -lne '
if ($ARGV eq "-") {
$u{$_}=1;
next
}
for $w (/[A-Z]+/g) {
next LINE unless $u{$w}
}
print' - words.txt
Изменение A-Z
к списку символов, которые составляют слово.
Вы могли сделать это как это с awk:
unique.awk
FNR == NR {
for(i=1; i<=NF; i++)
if(++w[$i] > 1)
not_unique[$i] = 1
next
}
{
for(i=1; i<=NF; i++)
if(not_unique[$i])
next
}
1
Выполните его как это:
awk -f unique.awk infile infile
Вывод:
F G
Как острота:
awk 'FNR == NR { for(i=1; i<=NF; i++) if(++w[$i] > 1) not_unique[$i] = 1; next } { for(i=1; i<=NF; i++) if(not_unique[$i]) next } 1' infile infile
Файл должен быть проанализирован дважды, сначала чтобы найти все групповые слова, затем распечатать те строки, которые содержат только уникальные слова. Это отражается в структуре программы, первый блок создает хеш, содержащий слова, которые не уникальны, вторые проверки каждая строка, и пропускает его, если это имеет групповые слова. Запаздывание 1
в конце только достигнут, когда уникальные строки происходят, и он вызывает действие awk по умолчанию ({ print $0 }
).