remove a quebra de linha usando o AWK

5

Estou enfrentando algum problema em relação ao meu script bash.

Abaixo está o meu código bash:

#!/bin/bash

cd /root/Msgs/TESTNEW/new

file=myfile.txt

var1=$(awk '(NR==30){print $2}' $file)
var2=$(awk 'NR>=38 && NR<=39' $file)
var3=${var2// /+}

curl "http://<server_ip>/power_sms/send_sms.php?username=<user>&password=<pass>phoneno=$var1&text=$var3"

Estes scripts propostos são para leitura em um intervalo de linha no arquivo particular (por exemplo: myfile.txt). Então, ele colocará o conteúdo do arquivo em alguma variável (var1, var2). Depois disso, a variável será chamada para as funções de onda.

Os problemas começam quando o conteúdo do arquivo tem espaçamento em cada nova linha. Isso faz com que a onda não funcione, pois não aceita caracteres de espaço em branco. Consegui substituir o espaçamento em mais símbolos. linha, ele terá espaçamento em vez de ter mais símbolo.

Algumas das saídas são as seguintes:

hi+there.hopefully+you+can+get+this+email+which+are being+send+as+sms.

Alguém pode me ajudar? Obrigado.

    
por user119720 22.05.2012 / 11:44

4 respostas

8

Se você estiver usando o linux, isso substituirá as novas linhas para +

awk '{printf "%s+",$0} END {print ""}'

ou com sed

sed ':a;N;$!ba;s/\n/+/g'

    
por 22.05.2012 / 11:58
7
awk NF=NF RS= OFS=+

Resultado

hi+there.hopefully+you+can+get+this+email+which+are+being+send+as+sms.
    
por 04.06.2014 / 07:20
3

EDIT: Para a solução com awk, você está procurando por isso:

awk 'BEGIN {RS=""}{gsub(/\n/,"",$0); print $0}' myfile.txt

Outro método para remover todas as novas linhas do seu arquivo:

tr -d "\n"

Um exemplo:

tr -d "\n" myfile.txt > myfilewithoutnewlines.txt
    
por 22.05.2012 / 12:01
3

Você está fazendo isso da maneira errada. Você precisa codificar por URL seu texto para obter uma solução realmente universal:

Quando você faz isso e usa um texto como este:

This is 
a test 
text

você acaba com isso: This+is+%0d%0aa+test+%0d%0atext .

Você pode usar curl para fazer isso:

curl -G -d username=<user> -d password=<pass> -d phoneno=$var1 \
       --data-urlencode [email protected] \
       http://<server_ip>/power_sms/send_sms.php

Para mais informações, consulte man curl .

    
por 22.05.2012 / 12:25

Tags