Bash Grep|awk и распечатать результат из разных файлов

Si no tiene root pero tiene permisos para leer los directorios, su mejor opción probablemente sea buscar los archivos .swppara el archivo en cuestión (asumiendo que el usuario no ha cambiado el intercambio predeterminado de vim ¡ubicación!):

$ find. -type f
./1/foo
./0/foo
./2/foo

$ cd 1
$ vi foo
^Z 
[1] 19650

$ cd..
$ find -type f
./1/foo
./1/.foo.swp
./0/foo
./2/foo

Tenga en cuenta, sin embargo, que si edita fooy .fooen el mismo directorio, vimdeberá crear diferentes extensiones temporales de nombre de archivo:

-rw-r--r--   1 user grp  12288 Feb  8 14:59.foo.swo
-rw-------   1 user grp   4096 Feb  8 14:58.foo.swp

Por lo tanto, es posible que desee buscar usandofind. -user username -name '.*.sw*'

Esto se parece un poco a un problema XY--¿qué problema mayor estás tratando de resolver? Si está tratando de administrar varios usuarios que editan archivos comunes, es posible que desee pasar a un sistema de administración de fuentes.

1
07.06.2019, 22:42
2 ответа
grep -F -f file2.txt file1.txt

Это позволит прочитать строки в file2.txtи использовать их в качестве шаблонов для поиска в file1.txt.


Если вы хотите проверять совпадения только во втором столбце, вы можете использовать эту команду awk:

awk -F: 'NR==FNR{a[$0];next}$2 in a' file2.txt file1.txt

Это прочитает каждую строку из file2.txtи создаст из них массив (a). Затем он пройдет через file1.txtи проверит, существует ли значение в столбце 2 в массиве a. Если это так, будет напечатана вся строка.

0
28.04.2021, 23:32

Вы можете просмотреть второй файл в цикле и выполнить grep из первого файла.

for pattern in `cat file2.txt` ; do grep $pattern file1.txt ; done

Если вы хотите найти только конец после двоеточия.

for pattern in `cat file2.txt` ; do grep :$pattern$ file1.txt ; done
0
28.04.2021, 23:32

Теги

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