Как разделить текст между разделителем в несколько файлов?

Полномочия на updates каталог является не совсем правильным для того, что Вы надеетесь делать. Для апачского пользователя, чтобы смочь записать новые файлы в каталог обновлений, им нужно разрешение записи. В этом случае, поскольку апач является членом updaters группа, просто используйте chmod g+w /updates позволить любому пользователю от updaters группы создавать новые каталоги и файлы.

Если Вы хотели бы, чтобы подкаталоги приняли значение по умолчанию той же группе, присвоенной /path/to/updates, (а не идентификатор основной группы создателя папки), использовать chmod g+s как объяснено здесь.

7
09.12.2014, 01:29
4 ответа

Simple AWK Команда :

awk 'NR%2==0{ print > "File "++i }' RS='"' file

RS определяет »« как разделитель записи и NR - это номер записи. Если номер записи был модуль Из 2 (потому что у нас есть еще один « для записей), затем распечатайте текущую запись $ 0 в файл # .

5
27.01.2020, 20:16
121 --- 53505-

Если цитата открытия всегда находится в начале строки, CSPLIT будет работать очень хорошо, как это:

bash$ csplit /tmp/data '/^"/'

, который вызывает файлы XX00 и т. Д. Примечание, ваш пример удаляет кавычки, и это не так. Тебе нужна командная линия SED для этого:

bash$ for file in xx* ; do { sed 's/^"//;s/"$//;' ${file} >x${file}; } ; done
4
27.01.2020, 20:16

Вы можете сделать:

awk -v RS=\" -v ORS= \
  '{ sub(/^\n*/,"");sub(/\n*$/,""); };
  /^\n*$/ { next;};
  { if(strcnt==0) { print $0 >"file1"; strcnt++;} else
  { print $0 >"file2"; }; }' file
2
27.01.2020, 20:16

с GNU

awk -v RS='"[[:space:]]*"' '
{sub(/^"|"[[:space:]]*$/, "");print > "output." ++n; close("output." n)}' file.txt
3
27.01.2020, 20:16

Теги

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