pt remove o último espaço apenas no final da linha, combinado com o awk

0

Eu tenho essa linha

Siouxsie Sioux  Siouxsie Sioux  ...     
Sylvia Tobias   Sylvia Tobias   ...     
Sydney Urshan   Sydney Urshan   ... 
Club Drummer (uncredited)   Club Drummer (uncredited)   ...

Com o awk eu imprimo a primeira guia da coluna separada e adiciono uma,

awk -F "\t" '{print $1","}'

está ok, mas eu vejo espaço em branco no final, então eu uso sed

awk -F "\t" '{print $1","}'|sed -r 's/(^[^[:blank:]]+[[:blank:]]+[^[:blank:]]+)[[:blank:]]+//'

Com isso ok, mas remova também o segundo espaço em branco, então

Club Drummer (uncredited) ,

torne-se

Club Drummer(uncredited),

eu quero

Club Drummer (uncredited),

Então, como remover apenas o último espaço? Obrigado

    
por elbarna 27.11.2014 / 18:33

4 respostas

3
awk -F ' *\t' '{print $1 ","}'

Ou:

sed $'s/ *\t.*/,/'
    
por 27.11.2014 / 18:41
2

Descarte os espaços à direita usando awk em si

awk -F'\t' '{sub(/[[:blank:]]+$/, "", $1);print $1","}' file
    
por 27.11.2014 / 18:40
2

Você pode usar printf em vez de usar print para contornar este problema.

$ awk '{for (i=1;i<NF;i++)printf("%s ", $i);printf("\b%s\n",",")}' file.txt 
Siouxsie Sioux Siouxsie Sioux,
Sylvia Tobias Sylvia Tobias,
Sydney Urshan Sydney Urshan,
Club Drummer (uncredited) Club Drummer (uncredited),

Ou se você precisar com sed

$ sed -re 's/ +\.\.+/,/g' file.txt 
Siouxsie Sioux  Siouxsie Sioux,     
Sylvia Tobias   Sylvia Tobias,     
Sydney Urshan   Sydney Urshan, 
Club Drummer (uncredited)   Club Drummer (uncredited),
    
por 28.11.2014 / 08:24
-1

Acho que toda a operação pode ser concluída usando sed 's/^\([^\t]*\).*/,/' ...

    
por 27.11.2014 / 20:37

Tags