Если я прочитал это правильно, все, что вам нужно, это что-то вроде
awk '{print $1}' file | sort | uniq -c |
while read num dupe; do [[ $num > 1 ]] && grep -n -- "$dupe" file; done
. Будет распечатываться номер строки, в которой содержится обман и сама строка. Например, используя этот файл:
foo bar baz
http://unix.stackexchange.com/questions/49569/ unique-lines-based-on-the-first-field
bar foo baz
http://unix.stackexchange.com/questions/49569/ Unique lines based on the first field sort, CLI
baz foo bar
http://unix.stackexchange.com/questions/49569/ Unique lines based on the first field
Он выдает этот вывод:
2:http://unix.stackexchange.com/questions/49569/ unique-lines-based-on-the-first-field
4:http://unix.stackexchange.com/questions/49569/ Unique lines based on the first field sort, CLI
6:http://unix.stackexchange.com/questions/49569/ Unique lines based on the first field
Чтобы напечатать только номер строки, вы можете сделать
[ f4]И напечатать только строку:
awk '{print $1}' file | sort | uniq -c |
while read num dupe; do [[ $num > 1 ]] && grep -n -- "$dupe" file; done | cut -d: -f 2-
Объяснение:
Сценарий awk просто печатает поле, разделенное 1-м пространством файла. Используйте $N для печати N-го поля. sort сортирует его, а uniq -c подсчитывает вхождения каждой строки.
Затем он передается в цикл while, который сохраняет число вхождений как $num, а строка - как $dupe, а если $num больше единицы (поэтому она дублируется по крайней мере один раз ), он будет искать файл для этой строки, используя -n для печати номера строки. [F15] сообщает grep, что следующее не является параметром командной строки, полезным, когда $dupe может начинаться с -.
Определите, где ваши приложения хранятся с помощью which <commandname>, и переместите эти каталоги в usb и создайте символическую ссылку, чтобы указать исходный каталог на новое место на вашем usb.