Поля не совпадают (по крайней мере, в примере) Вызываемый файл «full csv» имеет поле «PSEUDO BITHDAY», тогда как второй файл имеет поле «PSEUDO BI R THDAY». Во втором файле имеется дополнительный R.
Опция -t хорошо работает во всех выпусках соединения.
ПРАВКА: Ваш пример работает для меня
bash-4.1$ join -t, a b
NAIN GENIEUR 01/01/1917,C,D
bash-4.1$ join --version
join (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Haertel.
bash-4.1$
-121--289677- Ваша команда должна работать. Однако, по крайней мере в приведенном примере, в конце строки в file2
имеется космос. Это важно, это принимается как часть поля. Как вы видите, при удалении файла происходит ожидаемое соединение файлов:
$ join -t"," -j 1 file1 file2 ## no output
$ sed -i 's/ $//' file2 ## remove the trailing space
$ join -t"," -j 1 file1 file2 ## now it works
NAIN GENIEUR 01/01/1917,C,D
-121--289678- Более современные OSES защищают себя от такого рода неправильного использования по умолчанию, обычно путем установки пользовательских ограничений. Вероятно, поэтому система по-прежнему реагирует - она позволяет выделять память только до определенного объема, что значительно меньше, чем у машины.
POSIBLEMENTE:
find. ! \( -name '*.tr0' -o -name '*.scs' \) -type f -exec echo rm -f {} +
(Elimina echo
cuando quieras ejecutar el comando)
Si su find
apoyo-delete
:
find. ! \( -name '*.tr0' -o -name '*.scs' \) -type f -delete
El comando anterior funcionará recursivamente. Si desea solo en el directorio actual:
find. ! -name. -prune ! \( -name '*.tr0' -o -name '*.scs' \) -type f
En un shell que permite patrones de globbing extendidos, como bash
con la opción de shell extglob
habilitada(shopt -s extglob
)oksh93
:
rm./*.!(tr0|scs)
El patrón de expansión de la capa extendida !(pattern-list)
coincide con cualquier cosa excepto con los patrones especificados en el|
-delimitado pattern-list
.
Tenga en cuenta que el patrón también coincide con los nombres de los directorios si contienen puntos, pero dado que rm
no elimina los directorios de forma predeterminada, esto solo generaría algunos mensajes de error.
Para evitar esto, se usaría un bucle, probando cada nombre coincidente para asegurarse de que se refiera a un archivo normal:
for name in./*.!(tr0|scs); do
[ -f "$name" ] && rm "$name"
done