объединяем значения из двух файлов по одинаковым параметрам

sudo find /(-тип f -и -путь '*/ git / *' -iname 'README')-exec grep -liI '100644\|100755' {} \; -exec flip -u {} \;

я.(- введите f -и -путь '*/ git / *' -inname 'README' ):ищет файлы в пути, содержащем имя git и файл с именем README. Если вы знаете какую-либо конкретную папку и имя файла, поиск будет полезен.

II. -Команда exec запускает команду для имени файла, сгенерированного поиском

III.\; указывает на конец команды

iv.{} — результат поиска имени файла/папки, найденного в результате предыдущего поиска

v. Несколько команд могут быть запущены последовательно. Добавляя -exec "command" \; например, с -exec flip -u \;

vii.grep

1.-l lists the name of the file
2.-I searches only non-binary files
3.-q quiet output
4.'100644\|100755' searches for either 100644 or 100755 within the file found. if found it then runs flip -u. \| is the or operator for grep. 

вы можете клонировать этот тестовый каталог и попробовать:https://github.com/alphaCTzo7G/stackexchange/tree/master/linux/findSolution204092017

более подробный ответ здесь:https://github.com/alphaCTzo7G/stackexchange/blob/master/linux/findSolution204092017/README.md

0
31.12.2019, 16:02
1 ответ

Если все это влезет в память, то

 awk 'NR==FNR { s[$1]=$2 ; next }
      { print $0,s[$1] }' secondary.txt primary.txt

NR==FNR — это уловка, которая сообщает вам, обрабатываете ли вы первый файл (, предполагая, что первый файл не пуст ). Если это первый файл, сохраните значение второго столбца в ассоциативный массив и перейдите к следующей строке. Если мы не будем двигаться дальше, то мы должны обрабатывать второй файл, поэтому распечатайте значение из основного файла и сохраненное значение.

2
28.01.2020, 02:29

Теги

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