От: скрипт оболочки
- объединить некоторые файлы с разделителями табуляции - Unix & amp; Linux Stack Exchange Следующий скрипт должен выполнить внешнее соединение в столбце (поле) 1 всех файлов с разделителями табуляции, переданных в качестве аргументов. Он использует команду join, которая выполняет внешнее объединение в отсортированных файлах, по 2 файла за раз. Он будет присоединяться к каждой строке в файлах, включая строки заголовков. Если вы хотите, чтобы заголовки были исключены, измените две команды sort на то, что создает отсортированный файл, который их не дает.#!/bin/sh
if test $# -lt 2
then
echo usage: gjoin file1 file2 ...
exit 1
fi
sort -t $'\t' -k 1 "$1" > result
shift
for f in "$@"
do
sort -t $'\t' -k 1 "$f" > temp
join -1 1 -2 1 -t $'\t' result temp > newresult
mv newresult result
done
cat result
rm result temp
Если у вас установлена более старая оболочка, $'\t' не будет заменена вкладкой, поэтому вам нужно будет использовать «TAB», где вы помещаете литеральную вкладку между кавычками. Оптимизации возможны, если вместо /bin/sh вы можете использовать современную оболочку, такую как bash или ksh; например, строки sort -t $'\t' -k 1 "$f" > temp
join -1 1 -2 1 -t $'\t' result temp > newresult
можно заменить на join -1 1 -2 1 -t $'\t' result <(sort -t $'\t' -k 1 "$f") > newresult
Кажется, будет известна ошибка GVFS:
ошибка 607706 на ошибке GNOME bugzilla 254171 на LaunchPad.Примечание: у моего Ubuntu 16.04 есть группа fuse, я являюсь участником этой группы, но у Caja такая же проблема (это ошибка 1763033).
Кажется, будет известна ошибка GVFS:
ошибка 607706 на ошибке GNOME bugzilla 254171 на LaunchPad.Примечание: у моего Ubuntu 16.04 есть группа fuse, я являюсь участником этой группы, но у Caja такая же проблема (это ошибка 1763033).