Найдите слова в файле и сгенерируйте с ними .csv с помощью сценариев оболочки.

Вы не сможете этого сделать без chattr .

Однако вы можете поместить файлы, которые не хотите изменять или удалять, в отдельный каталог, сделайте этот каталог недоступным для записи (например, chmod og-w DIR ) и файлы в нем доступны только для чтения (например, chmod 644 DIR / * )

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

0
04.05.2018, 19:23
2 ответа
$ sed -n '/^get\.idea/s/^.*(\(.*\)).*/\1/;p' input | awk -F, 'BEGIN {print "Idea, Description";OFS=","} (NR % 2 ) == 1 {save=$2} (NR % 2) ==0 {print save, $2}'
Idea, Description
"Some idea1 tag abc","Some idea1 description1 abc"
"Some idea2 tag abc","Some idea2 description2 abc"

Мы используем sed, чтобы удалить весь ненужный мусор, а затем используем awk, чтобы создать файл CSV, анализируя каждую вторую строку.

0
28.01.2020, 04:23

Одной командойawk:

awk 'BEGIN{ print "Idea, Description"; FS = OFS = "," }
     { desc = substr($2, 1, length($2) - 2) }
     { if ($1 ~ /"tag/){ tag = desc } else { print tag, desc } }' idea.js

Выход:

Idea, Description
"Some idea1 tag abc","Some idea1 description1 abc"
"Some idea2 tag abc","Some idea2 description2 abc"

Расширенный подход для покрытия требования «создать соответствующий файл.csv в том же каталоге, в котором был найден файл idea.js»:

Создать idea_to_csv.awkскрипт:

#!/bin/awk -f

BEGIN{ print "Idea, Description"; FS=OFS="," }
{ desc = substr($2, 1, length($2)-2) }
{ if ($1 ~ /"tag/){ tag = desc } else { print tag, desc } }

find. -type f -name "idea.js" -execdir sh -c 'awk -f ~/idea_to_csv.awk "$1" > idea.csv' _ {} \;

Изменить путь ~/idea_to_csv.awkк вашему фактическому местоположению, где был создан idea_to_csv.awk

0
28.01.2020, 04:23

Теги

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