Проблемы, связанные с зацикливанием команды grep для нескольких CSV-файлов

Да, вы облажались, создав циклическую ссылку. Вы сделали это в /usr/bin, поэтому больше не можете выполнять команды.

Да, самый простой способ — получить доступ к испорченной -файловой системе извне, как описано в ответе, на который вы ссылаетесь, и исправить циклическую ссылку.

-1
07.01.2021, 14:37
2 ответа

Похоже, вы хотите что-то вроде:

mkdir -p raxA raxB raxC &&
  awk '
    /raxA/ {print > ("raxA/new_"FILENAME)}
    /raxB/ {print > ("raxB/new_"FILENAME)}
    /raxC/ {print > ("raxC/new_"FILENAME)}'./*.csv
3
18.03.2021, 22:38

Поскольку другие уже указывали на проблему с вашей командой, я даю вам альтернативный способ того, что вы делаете с циклами оболочки -, которых следует избегать .

с помощью awkвы также можете выполнять поиск шаблонов и разбивать каждый шаблон на несколько файлов.

awk '{ matched=match($0, /rax[ABC]/); };
     matched{ dirname=substr($0, RSTART, RLENGTH);
              system("mkdir -p " dirname);
              print >(dirname"/new_"FILENAME);
              matched=0;
}' infile

см.man awkдля функций match(), substr(), system().

так как ваш файл выглядит как.csv, и вы можете искать шаблоны в определенном столбце, а не во всей строке, добавьте -F,к команде (, указав разделитель полей входного файла )и замените $0(, представляющее всю строку в awk), соответствующим номером столбца в файле.csv, например, для сопоставления шаблонов в первом столбце используйте $1, во втором столбце — $2, в третьем — $3, поэтому на.

1
18.03.2021, 22:38

Теги

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