Перенаправление вывода в разные столбцы одного и того же файла

Моя проблема заключалась в непонимании того, как работают списки контроля доступа POSIX; в частности, я предположил, что ACL по умолчанию устанавливают разрешения для каталога, к которому они были применены, хотя на самом деле они применяются только к подкаталогам и файлам , созданным после того, как ACL по умолчанию были применены к родительскому объекту. и вообще не применять родительский объект.

Что меня насторожило, так это апелляция в списке разработчиков NFS по поводу этой проблемы. Один из разработчиков указал (, и это важно знать ), что NFS совершенно не зависит от этого и просто обращается к разрешениям, установленным в базовой файловой системе сервера. Это подтолкнуло меня к рассмотрению списков контроля доступа POSIX в файловой системе сервера, и --после некоторых экспериментов (это плохо документировано)--я реализовал описанную выше функциональность и воссоздал списки контроля доступа POSIX, чтобы они действительно делали то, что я хотел их делать. После этого проблема исчезла.

1
24.03.2021, 02:39
1 ответ

Если ваша оболочка поддерживает подстановку процессов, вы можете использовать команду pasteследующим образом:

paste \
  <(sed -n -e '1,33p' myfile | awk '{ sum += $3 } END { print sum }') \
  <(sed -n -e '34,40p' myfile | awk '{ sum += $3 } END { print sum }') \
  <(sed -n -e '41,49p' myfile | awk '{ sum += $3 } END { print sum }') >>../pop.txt

Однако обработка одного и того же файла несколько раз таким образом неэффективна -вместо этого вы можете использовать одну команду awk, например

awk '{sum+=$3} NR==33{s1=sum; sum=0} NR==40{s2=sum; sum=0} NR==49{print s1,s2,sum; exit}' >>../pop.txt

(отвечая на последующий -вопрос вверх в комментариях ), чтобы добавить PWD в качестве первого столбца, вы можете сделать

awk -v cwd="$(basename "$PWD")" '
  {sum+=$3} NR==33{s1=sum; sum=0} NR==40{s2=sum; sum=0} NR==49{print cwd,s1,s2,sum; exit}
'

Кстати, избегайте таких конструкций, как

for f in `ls -d./*/`

по причинам, обсуждаемым здесь Bash Pitfall #1

2
28.04.2021, 22:57

Теги

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