Слияние 2 файлов с на основе полевого соответствия

Можно также установить Oracle через командную строку (также известный, как 'запускают', автоматическая или тихая установка). См. https://dba.stackexchange.com/questions/42926/how-to-automate-oracle-db-installation-like-a-hands-free-install для деталей.

Обратите внимание, что только для версии Экспресса RPMs доступны. Standard Edition только доступно с помощью двух zip-файлов. Специальная версия содержит меньше функций и имеет больше ограничений, например, она не содержит встроенный препроцессор SQL Pro*C.

4
13.09.2015, 02:38
3 ответа

Прежде всего, «манекен», вероятно, не лучший термин - procfs , sysfs или dev (tmp) fs далеко не быть бесполезны. Либо используйте параметр -t (type) для mount и отправьте в него список интересующих вас файловых систем, разделенных запятыми:

mount -t tmpfs,xfs

, либо используйте grep для фильтрации желаемого (возможно, grep -v для отображения несоответствующего):

mount | grep -Ev "(cgroup|proc|sysfs)"
-121--100673-

I Это может быть полезно кому-то.

Docker использовал драйвер места хранения «aufs» в старом ядре. Поэтому необходимо загрузить модуль «aufs.ko». В новом ядре поддержка aufs не была включена и docker начал использовать драйвер места хранения «devicemapper».

-121--244813-

Мне нравится неловкое решение, но я думаю, что это может быть проще:

sort file1 > sortedFile1
sort file2 > sortedFile2
join -o 1.1 2.2 1.2 sortedFile1 sortedFile2

Опция -o переопределит формат, который вы выберете для первого поля первого файла, второго поля второго файла и второго поля первого файла.

3
27.01.2020, 20:47

Переименование symlinks

Один подход к обработке имен файлов специальными символами - как первые символы или другие символы в имени файла переименовываются в более простые имена .

Это можно использовать, даже если необходимо сохранить исходные имена файлов : Переименовать копию имен файлов.
Для этого можно скопировать файлы, а также создать symlinks или hardlinks в файлы и переименовать их. cp создает symlinks вместо копий с опцией -s ( -l для жестких ссылок).

Используйте «detox» для очистки имен

Для переименования в чистые имена файлов можно использовать detox ; Он переименовывает файлы для очистки имен файлов в соответствии с различными правилами, определенными в файле detoxrc . По умолчанию символы UTF8 удаляются; С опцией -s utf_8-only они заменяются на _ :

$ touch '♫ 漢字カ' ♫foo
$ ls -1
♫foo
♫ 漢字カ
$ detox -s utf_8-only * 
$ ls -1                
_ ___
_foo


«детокс» на symlinks

В сочетании с работой над symlinks, как описано выше:

$ mkdir orig
$ cd orig 
$ touch '♫ 漢字カ' ♫foo
$ cd ..
$ mkdir clean
$ cd clean 
$ cp -s ../orig/* .
$ ll               
lrwxrwxrwx 1 14 Oct  8 05:52 ♫foo -> ../orig/♫foo
lrwxrwxrwx 1 21 Oct  8 05:52 ♫\ 漢字カ -> ../orig/♫\ 漢字カ
$ ls -1
♫foo
♫ 漢字カ
$ detox --special -s utf_8-only *
$ ll                                
lrwxrwxrwx 1 21 Oct  8 05:52 _\ ___ -> ../orig/♫\ 漢字カ
lrwxrwxrwx 1 14 Oct  8 05:52 _foo -> ../orig/♫foo
-121--15001-

Любой процесс, который не блокирует SIGPIPE , будет убит, если его выход будет направлен на конец записи трубы

Как только головка закрывает свой вход (т.е. заканчивается), wc умирает, что занимает меньше времени, чем завершение всей работы.

-121--87765-
$ awk 'FNR==NR{a[$1]=$2;next} ($1 in a) {print $1,a[$1],$2}' file2 file1
aa 45 32
bb 31 15
cc 50 78

Объяснение:

awk неявно проходит через каждый файл, по одной строке за раз. Поскольку мы дали ему file2 в качестве первого аргумента, он считывается первым. файл 1 считывается в секунду.

  • FNR = = NR {a [$1] = $2; следующий}

    NR - количество строк, прочитанных awk до сих пор, и FNR - количество строк, прочитанных awk до сих пор от текущего файла. Таким образом, если FNR = = NR , мы все еще читаем первый именованный файл: file2 . Для каждой строки в file2 назначается a [$1] = $2 .

    Здесь a является ассоциативным массивом , а a [$1] = $2 означает сохранение второго столбца file2, обозначенного $2 , в качестве значения в массиве a с использованием первого столбца file2, $1 , в качестве ключа.

    next сообщает awk , чтобы пропустить остальные команды и начать сначала со следующей строки.

  • ($1 в a) {print $1, a [$1], $2}

    Если мы попадем сюда, это означает, что мы читаем второй файл: file1 . Если мы видим первое поле строки в file2 , как определяется содержимым массива a , то мы распечатываем строку со значениями поля 2 из обоих файлов.

8
27.01.2020, 20:47

Присоединить 2-й файл, File2к 1-му файлу, File1.

join <(sort -k1 file2) <(sort -k1 file1)
0
27.01.2020, 20:47

Теги

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