только вывод, когда первые столбцы являются тем же

Thunderbird записан, XUL. Это - язык разметки Mozilla, и это приводится в действие XULRunner. В основном это ориентировало на GUI XML.

Вещью, которая разрабатывает целое приложение, является на самом деле просто простое .css файл. При нахождении его можно затем найти элементы, которые Вы ищете и просто настраиваете CSS. Я отправлю назад необходимый путь к файлу и правилам, которые настроят.

4
23.06.2012, 10:03
2 ответа

Первый сценарий является расширением ответа Sergei Lomakov, но это было немного слишком длинно для комментария. Это обслуживает пробелы в именах файлов и заключает каждое "имя" в кавычки. Этот метод не делает requirea шаг вида.

Второй сценарий иначе, с помощью вида + awk, но без обработки матриц первого метода. Конечно, это теряет входную последовательность, если это - проблема для Вас, (но хорошо для вопроса, поскольку это использует шаг вида во всяком случае).

Оба метода также используют sed для представления \x00 как разделитель полей; включить пробельную обработку.

метод 1, массивы в awk.

find . -type f | 
  xargs -I {} md5sum {} |
    sed 's/ [ *]/\x00/' | # "  "==text, " *"==binary
      awk -F"\x00" '{
             if( md5s[$1] == "" ) {sep=""} else {sep=FS} 
             md5s[$1]=md5s[$1] sep $2 }
        END{ for(md5 in md5s ) {
               if( (split(md5s[md5], names, FS)) > 1 ) {
                 sep="\""  
                 for( ix in names ) {
                   printf "%s%s", sep, names[ix]
                   sep="\" \"" }
                 print "\"" } } }'

метод 2, вид + awk.

find . -type f | 
  xargs -I {} md5sum {} |
    sort |sed 's/ [ *]/\x00/' | # "  "==text, " *"==binary
      awk -F"\x00" '{
             if (pkey!=$1) { ct=-1; pkey=$1; pnam=$2 }
             else{if (++ct) { printf(" \"%s\"",$2) }
                  else { printf("%s\"%s\" \"%s\"",nl,pnam,$2)
                         nl="\n" } } }
        END{ print "" }' 

Вывод

"./tt.txt" "./tx.txt"
"./ize2.txt" "./ize3.txt" "./ize.txt"
2
27.01.2020, 20:53
  • 1
    в именах файлов лучше, я отметил это как ответ вместо этого, :) –  gasko peter 29.06.2012, 14:06

Используйте это "волшебство" :)

find . -type f | xargs -I "{}" md5sum "{}" | awk '{count[$1]=count[$1]" "$2}END{for(j in count) if( (split(count[j], A)) > 1) print count[j]}' | sed -e 's/\.\///g'
4
27.01.2020, 20:53
  • 1
    Althought это действительно обрабатывает демонстрационные имена файлов, данные в вопросе, это не обрабатывает пробел в именах файлов (через $2 в awk)... и просто между прочим, Вам не нужны кавычки вокруг {} (но, и при этом они ничего не нарушают). {} уже слово удара и таким образом не подвергается разделению слова оболочки (но после того как имя файла в объеме awk, это подвергается полевому разделителю awk, который является пробелом. –  Peter.O 23.06.2012, 21:47

Теги

Похожие вопросы