как выбрать столбцы в файле по имени столбца в txt файле в unix

Su programa Python deshace nohup.

nohupignora la señal de colgar con SIG_IGNy luego carga en cadena su programa en el mismo proceso.

Su programa Python restablece rápidamente el manejo de la señal para la señal de colgado, instalando su propio controlador de señal. Ese controlador verifica una función interna (que no está muy bien diseñada, basándose en algunas suposiciones erróneas, si es la que he visto )y decide que el curso de acción apropiado al recibir una señal de colgado es para imprimir ese mensaje y salir.

Su programa Python por diseño no esnohup-capaz. En un sistema con un shell de control de trabajo y semántica de sesión/trabajo POSIX, debe disownejecutar el trabajo para que el shell nunca lo sepa para enviarle una señal de colgado en primer lugar.

(Incluso eso no es suficiente en los sistemas operativos systemd. Debido a que la gente de systemd ha hecho un poco de oreja de cerdo con su mecanismo de sesión de inicio de sesión de espacio de usuario -, también debe asegurarse de que el mecanismo de systemd que indica el apagado del sistema, en lugar de colgar, para iniciar sesiones en cada cierre de sesión tampoco está pateando pulgadas)

Lecturas adicionales

0
09.07.2019, 04:07
3 ответа
$ cat tst.awk
NR==FNR {
    groups[++numGroups] = $1
    next
}
FNR==1 {
    for (i=1; i<=NF; i++) {
        f[$i] = i
    }
}
{
    printf "%s%s%s%s", $1, OFS, $2, OFS
    for (groupNr=1; groupNr<=numGroups; groupNr++) {
        group = groups[groupNr]
        printf "%s%s", $(f[group]), (groupNr<numGroups ? OFS : ORS)
    }
}

$ awk -f tst.awk group1 file
#CHROM POS P0431 P434 P435
Chr01 180349 G N G
Chr01 180372 N N A
Chr01 180389 A N N

Если вы хотите, чтобы вкладка вывода -была разделена вместо пустого -, добавьте строку в верхней части скрипта, которая говорит BEGIN { OFS="\t" }.

Если вы хотите, чтобы выходные данные выглядели визуально табличными, вы можете сделать это с помощью printfвнутри awk или путем передачи вышеуказанного вcolumn:

$ awk -f tst.awk group1 file | column -t
#CHROM  POS     P0431  P434  P435
Chr01   180349  G      N     G
Chr01   180372  N      N     A
Chr01   180389  A      N     N
0
28.01.2020, 02:39

С csvcutи csvformatиз csvkitи при условии, что (возможно несколько )пробелов в качестве входных разделителей:

$ csvcut -d' ' -S -c "#CHROM,POS,$(paste -sd, < group1)" group1.data | csvformat -T
#CHROM  POS P0431   P434    P435
Chr01   180349  G   N   G
Chr01   180372  N   N   A
Chr01   180389  A   N   N
1
28.01.2020, 02:39

Вы можете просто сделать это с помощьюawk:

awk 'NR==1,NR==4 {print $1,$2,$3,$6,$7}' group1 > group1.data

Это просто напечатает поля 1, 2, 3, 6 и 7 первых четырех строк и даст запрошенный вывод и добавит его в файл group1.data:

#CHROM POS P0431 P434 P435
Chr01 180349 G N G
Chr01 180372 N N A
Chr01 180389 A N N

Если вы хотите, чтобы он выглядел чище, вы можете использовать OFS='\t', чтобы установить разделитель в виде табуляции:

awk 'NR==1,NR==4 {print $1,$2,$3,$4,$5}' OFS='\t' group1 > group1.data

Выход:

#CHROM  POS     P0431   P434    P435
Chr01   180349  G       N       G
Chr01   180372  N       N       A
Chr01   180389  A       N       N

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

0
28.01.2020, 02:39

Теги

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