Используйте SED или AWK для перемещения строк в столбцы

Ваш вопрос не очень ясен, но возможно эта команда оболочки помогает.

for x in *.bam; do
    bedtools bamTobed -i "$x" >"${x%.bam}.bed"
done
2
04.07.2016, 20:04
4 ответа

попробуйте

 awk '{printf "%s%s",$0,NR%7?",":"\n" ; }' 

большую часть

  • NR% 7? ",": "\ N" : if-then-else:
    • if (NR% 7): NR, (Number of Record)% (modulo) 7 (разделить на 7! = 0)
    • then printf a ','
    • else новая строка.
  • $ 0 - это вся строка
5
27.01.2020, 21:49

Если вы не застряли на sed или awk, используйте paste

echo "R1
R2
R3
R4
R5
R6
R7
R1
R2
R3
R4
R5
R6
R7" | paste -d, - - - - - - -
R1,R2,R3,R4,R5,R6,R7
R1,R2,R3,R4,R5,R6,R7

Нет проблем со вторым образцом , просто укажите точку с запятой, чтобы оболочка не увидела ее:

paste -d ';' - - - - - - - <filename
00000;ND00000056888;Doe, Jane J;F;99 Y;09/01/2014 8:01:08 AM;EE
00001;ND00000056889;Doe, John J;M;66 Y;09/02/2014 5:01:08 PM;DD
6
27.01.2020, 21:49

awk '{ORS = NR% 7? ",": "\ n"} 1' - это еще один способ работы с awk.

1
27.01.2020, 21:49

Еще один способ:

pr -a7 -l1 -s";" filename

, что сокращенно на

pr --columns=7 --across --length=1 --separator=";" filename
1
27.01.2020, 21:49

Теги

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