chroot + mount = EBUSY

Это проблема с polkit.service ; это не начиналось для меня.

После дальнейшего расследования я обнаружил, что пользователя polkitd не существует. Затем yum переустановите polkit и systemctl start polkit устранили проблему.

Я отладил это, запустив polkitd напрямую: / usr / lib / polkit-1 / polkitd

4
29.08.2018, 13:51
4 ответа

Попробуйте этот простой способ:

сначала сделай:

awk 'FNR==1 { print substr(FILENAME,1,16) >substr(FILENAME,1,16)".tmp" }
     FNR >1 { print $12 > substr(FILENAME,1,16)".tmp" }
     NR==FNR{ print $6  >"first_column.tmp" }' TCGA-A*/t_data.ctab

затем pasteих вместе с файлом с разделителями-запятыми (удалите -d,, если вы хотите вместо этого использовать вкладку):

paste -d, *.tmp
t_name,TCGA-A2-A0T3-01A,TCGA-A7-A4SA-01A,TCGA-A7-A6VW-01A
MSTRG.1.1,0.000000,0.00000,0.0000
MSTRG.10.1,0.284182,0.28418,0.2841
MSTRG.11.1,0.077194,0.07719,0.0771
ENST00000456328.2,0.000000,0.00000,0.0000
MSTRG.10.3,0.000000,0.00000,0.0000
MSTRG.11.2,0.051214,0.05121,0.0512
ENST00000450305.2,0.000000,0.00000,0.0000
MSTRG.10.5,0.007904,0.00790,0.0079
MSTRG.10.6,0.000000,0.00000,0.0000
MSTRG.10.7,0.000000,0.00000,0.0000
MSTRG.11.3,0.137788,0.13778,0.1377
3
27.01.2020, 20:54

Удовлетворены ли вы выводом в формате csv?

find ballgown -name t_data.ctab | awk ' {
  F=$0
  print F " started"
  split(F,P,"/")
  FN= P[2]
  TF[FN]=1
  getline < F
  while ((getline < F) > 0) {
    TN[$6]=1
    TV[FN ":" $6] = $NF
  }
  close(F)
  print f " done"
}
END {
  printf("tname")
  for (F in TF) {
    printf(", %s",F)
  }
  print ""
  for (N in TN) {
    printf("%s",N)
    for (F in TF) {
      printf(", %s",TV[F ":" N])
    }
    print ""
  }
}
'
1
27.01.2020, 20:54

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

Позиционируйте себя в каталоге бальных платьев:

cd ballgown

В качестве первого шага создайте выходной файл, содержащий первый столбец:

cut -f6 TCGA-A7-A6VW-01A/t_data.ctab > out.tab

Основная часть работы выполняется комбинацией findиperl:

find -iname t_data.ctab -exec perl -i.bak -lane 'if($.==1){$ARGV=~/([-\w]+)\/.*$/;$f=$1} if(1..eof&&($n=$.)){$a[$.]=$F[11];$a[1]=$f;next}; print "$_\t$a[$.-$n]"' {} out.tab \;

Примечание.:Это разрушительное действие;исходные файлы будут сохранены с добавленным расширением .bak.


Неразрушающая -версия, использующая также sponge(, findзаменена forциклом):

for F in */t_data.ctab; do perl -lane 'if(1..eof&&($n=$.)){$a[$.]=$F[11];$a[1]=$ARGV=~s/([-\w]+)\/.*$/$1/r;next} print "$_\t$a[$.-$n]"' $F out.tab | sponge out.tab; done;
0
27.01.2020, 20:54

Полностью программное решение на PHP .

<?php
$filenames = glob('*/t_data.ctab');
foreach($filenames as $k=>$filename) {
    $name = pathinfo($filename)['dirname']. "\n";
    $file = file($filename);
    foreach ($file as $n => $line) {
        $line = explode("\t", $line);
        if ($n === 0) {
            $line[11] = $name;
        }
        if ($k === 0) {
            $out[$n] = $line[5]. "\t". $line[11];
        } else {
            $out[$n] = trim($out[$n]). "\t". $line[11];
        }
    }
}
file_put_contents('out.tab', $out);

Использование:

  • Переместитесь в каталог ballgown
  • Сохраните файл с именем, скажем,script.php
  • Запустите скрипт с помощьюphp script.php
  • Вы найдете результат в файле out.tab

Примечание:

Дайте мне знать, если вам нужны дополнительные пояснения относительно того, как установить и использовать PHP, что делает скрипт и как его настроить для конкретных нужд.


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

import os, glob
out = []
for k, filename in enumerate(glob.glob('*/t_data.ctab')):
    with open(filename, 'r') as f:
        file = f.readlines()
        for n, line in enumerate(file):
            line = line.split("\t")
            if n == 0:
                line[11] = os.path.dirname(filename) + "\n"
            if k == 0:
                out.append(line[5] + "\t" + line[11])
            else:
                out[n] = out[n].strip() + "\t" + line[11]
outfile = open('out.tab', 'w')
outfile.write("".join(out))

Тот же подход, написанный как Perl один -лайнер:

perl -lane '$a[$n].=($a[$n]?"":$F[5])."\t".($n<1?$ARGV=~s#([-\w]+)\/.*$#$1#r:$F[11]); $n=eof?0:$n+1}{print "$_" for @a' */t_data.ctab
0
27.01.2020, 20:54

Теги

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