Estoy usando sed -e "s/\*DIVIDER\*/$DIVIDER/g"
para reemplazar *DIVIDER*
con una cadena especificada por el usuario, que se almacena en $DIVIDER
. El problema es que quiero que puedan especificar caracteres de escape como su divisor, como \ n o \ t. Cuando pruebo esto, acabo con la letra n o t, etc.Usar sed para reemplazar una cadena con el contenido de una variable, incluso si es un carácter de escape
¿Alguien tiene alguna idea sobre cómo hacer esto? ¡Será muy apreciado!
EDITAR: Aquí está la carne del guión, me falta algo.
curl --silent "$URL" > tweets.txt
if [[ `cat tweets.txt` == *\<error\>* ]]; then
grep -E '(error>)' tweets.txt | \
sed -e 's/<error>//' -e 's/<\/error>//' |
sed -e 's/<[^>]*>//g' |
head $headarg | sed G | fmt
else
echo $REPLACE | awk '{gsub(".", "\\\\&");print}'
grep -E '(description>)' tweets.txt | \
sed -n '2,$p' | \
sed -e 's/<description>//' -e 's/<\/description>//' |
sed -e 's/<[^>]*>//g' |
sed -e 's/\&\;/\&/g' |
sed -e 's/\<\;/\</g' |
sed -e 's/\>\;/\>/g' |
sed -e 's/\"\;/\"/g' |
sed -e 's/\&....\;/\?/g' |
sed -e 's/\&.....\;/\?/g' |
sed -e 's/^ *//g' |
sed -e :a -e '$!N;s/\n/\*DIVIDER\*/;ta' | # Replace newlines with *divider*.
sed -e "s/\*DIVIDER\*/${DIVIDER//\\/\\\\}/g" | # Replace *DIVIDER* with the actual divider.
head $headarg | sed G
fi
La larga lista de líneas sed están reemplazando los caracteres de una fuente XML, y los dos últimos son los que se supone que deben sustituir a los saltos de línea con el carácter especificado. Sé que parece redundante reemplazar una línea nueva con otra línea nueva, pero fue la forma más fácil que pude encontrar para dejarles elegir su propio divisor. El reemplazo del divisor funciona muy bien con los caracteres normales.
su guión está mal escrita. una gran cantidad de pasos de sed innecesarios. Muestre el archivo de entrada que está procesando y muestre el resultado deseado. – ghostdog74