Как удалить шаблон в столбце с помощью командной строки sed?

просто вы также можете:

awk '$4+$5+$8+$9' infile

и сохранить строку заголовка:

awk 'NR==1 || $4+$5+$8+$9' infile
0
25.11.2021, 06:54
2 ответа
awk 'NR>1{gsub(/\"/,"",$0);gsub(/\.[0-9]*/,"",$1)}1' filename

выход

"baseMean"  "log2FoldChange"    "lfcSE" "stat"  "pvalue"    "padj"
ENSG00000000003 11.3434183210348 0.753849141787545 0.682104979689654 1.10518052826785 0.269081372382168 0.999928163137131
ENSG00000000419 793.733816508413 -0.256066185652526 0.133681398896401 -1.91549600592503 0.0554292780227467 0.863889514659372
ENSG00000000457 948.240987147508 -0.088027064401221 0.0869481579436567 -1.01240861776811 0.3113427195966
0
25.11.2021, 18:26
$ sed 's/^"\(ENS[[:alnum:]]*\)\..*"/"\1"/' file
"baseMean"  "log2FoldChange"    "lfcSE" "stat"  "pvalue"    "padj"
"ENSG00000000003"    11.3434183210348    0.753849141787545   0.682104979689654   1.10518052826785    0.269081372382168   0.999928163137131
"ENSG00000000419"    793.733816508413    -0.256066185652526  0.133681398896401   -1.91549600592503   0.0554292780227467  0.863889514659372
"ENSG00000000457"    948.240987147508    -0.088027064401221  0.0869481579436567  -1.01240861776811   0.3113427195966

Приведенная выше команда sedудаляет версию из стабильных идентификаторов Ensembl только в первом столбце. Он делает это путем сопоставления "ENSв начале строки, за которым следует любое количество буквенно-цифровых символов, точка и некоторый символ кавычек, не являющийся -. Точка и символы без кавычек -отбрасываются с помощью замены.

Чтобы также удалить двойные кавычки, измените текст замены с "\1"на просто \1.

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

$ sed 's/\..*"/"/' file
"baseMean"  "log2FoldChange"    "lfcSE" "stat"  "pvalue"    "padj"
"ENSG00000000003"    11.3434183210348    0.753849141787545   0.682104979689654   1.10518052826785    0.269081372382168   0.999928163137131
"ENSG00000000419"    793.733816508413    -0.256066185652526  0.133681398896401   -1.91549600592503   0.0554292780227467  0.863889514659372
"ENSG00000000457"    948.240987147508    -0.088027064401221  0.0869481579436567  -1.01240861776811   0.3113427195966

Если вам нужно удалить кавычки, вы можете сделать это с помощью выражения 2,$ s/"//g, например,

sed -e 's/\..*"/"/' -e '2,$ s/"//g' file

Или вы можете просто передать все через tr -d '"', чтобы удалить все кавычки.

sed 's/\..*"/"/' file | tr -d '"'
0
25.11.2021, 19:03

Теги

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