2015-06-25 3 views
0

Как я могу манипулировать текстовым файлом с помощью сценария оболочки?манипулировать текстом, используя сценарий оболочки?

вход

chr2:98602862-98725768 
chr11:3100287-3228869 
chr10:3588083-3693494 
chr2:44976980-45108665 

ожидается выход

2 98602862 98725768 
11 3100287 3228869 
10 3588083 3693494 
2 44976980 45108665 
+0

, что логика здесь? попробуйте описать его таким образом, чтобы иметь смысл, а также обеспечить ваши попытки, так как это кажется довольно простым. – fedorqui

ответ

1

Использование sed Вы можете написать

$ sed 's/chr//; s/[:-]/ /g' file 
2 98602862 98725768 
11 3100287 3228869 
10 3588083 3693494 
2 44976980 45108665 

Или, может быть, вы могли бы использовать awk

awk -F "chr|[-:]" '{print $2,$3, $4}' file 
2 98602862 98725768 
11 3100287 3228869 
10 3588083 3693494 
2 44976980 45108665 

Что она делает

  • -F "chr|[-:]" устанавливает разделители полей в chr или : или -. Теперь вы можете печатать различные поля или столбцы.

  • Вы также можете использовать другой разделитель полей как -F [^0-9]+, который будет делать что угодно, кроме цифр как разделителей.

+0

Альтернативно, используя awk, разделитель полей может быть '[^ 0-9] +' (т. Е. Один или несколько цифр). –

+0

@TomFenech Хорошая точка. Добавлен ответ. Спасибо за совет :) – nu11p01n73R

1

Если вы не заботитесь о ведущей пустой знак:

$ tr -s -c '[0-9\n]' ' ' < file 
2 98602862 98725768 
11 3100287 3228869 
10 3588083 3693494 
2 44976980 45108665 
Смежные вопросы