Você poderia fazer:
sed 's/\(\.[^"[:blank:]]*\)[[:blank:]]*"/"/g'
Isso é remover as seqüências de espaços em branco que seguem .
seguido por uma seqüência de caracteres não em branco-nem- "
e são seguidos por um "
Para remover os espaços em branco antes de cada outro caractere de aspas duplas em cada linha, você poderia fazer algo como:
sed 's/[[:blank:]]*"/"&/g
s/\(\([^"]*"\)\{3\}\)[[:blank:]]*"/"/g
s/"\([^"]*"\)//g'
Isto é:
- Insira um
"
extra antes de cada <blanks>"
- Alterar todo o
<X>"<blanks>"<Y>"<blanks>"
para <X>"<blanks>"<Y>""
- Remova todos os outros
"
para desfazer as inserções em 1
Ou de maneira mais direta com awk
:
awk -F \" -v OFS=\" '
{
for (i = 2; i <= NF; i += 2 )
sub(/[[:blank:]]*$/, "", $i)
print
}'
Observe que tr
não apertaria os caracteres, a menos que você use a opção -s
. É mais provável que você tenha esquecido de citar uma expansão de parâmetro ou substituição de comando que continha a saída de tr
.
Em qualquer caso, tr
não pode ser usado para essa tarefa. É apenas uma ferramenta de transliteração. Tudo o que ele pode fazer é traduzir / excluir / espremer todos os caracteres de espaço. Não é possível converter / excluir / espremer apenas alguns alguns caracteres de espaço.