Uma solução sed que garante que estamos apenas mexendo na quinta coluna:
sed -E 's/^(([^ ]+ +){4})"([^"]+)";$//' infile
chr1 134901 139379 - ENSG00000237683.5
chr1 860260 879955 + ENSG00000187634.6
chr1 861264 866445 - ENSG00000268179.1
chr1 879584 894689 - ENSG00000188976.6
chr1 895967 901095 + ENSG00000187961.9
Isso funciona também sem ERE ( -E
ou -r
para alguns sed mais antigos), mas requer muito mais barras invertidas. O +
-quantifier é somente ERE de acordo com a especificação POSIX 1 e pode ser substituído por {1,}
(ou \{1,\}
para BRE).
Caso as colunas não sejam separadas por espaços, os espaços podem ser substituídos pela classe de caracteres [:blank:]
POSIX para também corresponder às guias.
O regex em detalhes:
^ # Anchored at start of line
( # Capture group 1 for first 4 columns
( # Capture group 2 for repeat count
[^ ]+ # 1 or more non-spaces
+ # 1 or more spaces
){4} # 4 times "word plus spaces" (columns)
) # End capture group 1
" # Column 5 starts with double quote (not captured)
( # Capture group 3 for column 5
[^"]+ # One or more non-quote characters
) # End capture group 3
"; # Quote and semicolon at end of column 5
$ # Anchored at end of line
1 O GNU sed, como extensão, permite que \+
seja usado no BRE também.