Замените только пробелы (без табуляции, без конца строки) табличного файла с подчеркиванием - PullRequest
0 голосов
/ 28 ноября 2018

Мне нужно заменить только пробелы в файле с разделителями табуляции символами подчеркивания (но с сохранением табуляции и деления в строках).Файл состоит из 5 миллионов строк и 8 столбцов, вот первые две строки в качестве примера:

Contig505_strand1_frame2_coord21-810    sp|Q06605|GRZ1_RAT Granzyme-like protein 1 OS=Rattus norvegicus PE=2 SV=1   32.245  245 153 6   5.15e-33    123
Contig505_strand1_frame2_coord21-810    sp|P36178|CTRB2_LITVA Chymotrypsin BII OS=Litopenaeus vannamei PE=1 SV=1    34.483  232 140 7   1.78e-32    122

Пока я использую эти команды последовательно, но это очень медленно ... есть быстрееспособ сделать это?

tr -s '\t' ';' <inputfile.txt >file2.txt
tr -s '[:blank:]' '_' <file2.txt >file3.txt
tr -s ';' '\t' <file3.txt >file4.txt

спасибо!

1 Ответ

0 голосов
/ 28 ноября 2018

[:blank:] включает вкладки, поэтому я думаю, что если вы хотите заменить один или пробел подчеркиванием, это может работать лучше:

sed -E 's/ +/_/g' inputfile.txt > file2.txt

Команда sed (редактирование потока) ищет один илибольше пробелов и заменяет их подчеркиванием.«G» - глобальный, что означает, что нужно выполнить замену несколько раз в строке, если она найдена.Действие по умолчанию - заменить только первое вхождение.

...