2012-06-24 6 views
1

У меня есть несколько файлов, которые имеют формат что-то вроде этого:Редактирование терминалов файла удалить некоторые символы

 
TCTCTGGAAAGGGACGCCTGGGAGG 10 
AAAAATACATTCTAACCTCGGCGT 1 
TAATTTCATCAATATATCAATG 1 
(etc...) 

Я хочу, чтобы удалить все после того, как пространство, так что я только получаю это в конце концов:

 
TCTCTGGAAAGGGACGCCTGGGAGG 
AAAAATACATTCTAACCTCGGCGT 
TAATTTCATCAATATATCAATG 
(etc...) 

Как бы это сделать?

+1

Следует ли предположить, что у вас есть стандартные инструменты Unix, такие как sed, awk, perl и т. Д.? И когда вы говорите, что хотите удалить все «после» пространства, вы имеете в виду «после и в том числе»? –

+0

Да все после и в том числе пространство. Также у меня есть все стандартные инструменты Unix. – Bucco

ответ

2

Вы можете сделать это с AWK:

cat oldfile | awk '{print $1}' > newfile 
+0

Итак, все эти методы вернут новый файл с пробелами и номерами, удаленными справа? – Bucco

+0

yes, newfile будет содержать только строки с начала строки – timos

2
cut -d' ' -f1 file.txt 

или:

sed 's/ .*//' file.txt 

или

sed -e 's/[^ACTG]//g' file.txt 

или

awk '{print $1}' file.txt 
+0

Итак, все эти методы вернут новый файл с пробелами и номерами, удаленными справа? – Bucco

0

Не так лаконично и красиво, как ответ Тимоса :), но еще один быстрый пример той же функциональности, но написанный на Ruby.

#!/usr/bin/env ruby 

data = File.read("data.txt") 
f = File.open("outData.txt", "w") 
finalData = data.scan(/^\w+/) 
finalData.each {|i| f.write(i + "\n")} 
f.close 
+0

Итак, все эти методы вернут новый файл с пробелами и номерами, удаленными справа? – Bucco

+0

Привет Bucco, да, следующий код будет делать то, что вам нужно в вашем вопросе. Если у вас есть файл, содержащий множество строк чего-то типа «TCTCTGGAAAGGGACGCCTGGGAGG 10», он проанализирует их в файле с именем outData.txt и будет содержать только данные ДНК –

Смежные вопросы