我正在使用
用户指定的字符串sed -e "s/\*DIVIDER\*/$DIVIDER/g"替换*DIVIDER*,该字符串存储在$DIVIDER.问题是我希望他们能够将转义字符指定为分隔符,例如\n或\ t.当我尝试这个时,我最后得到字母n或t,或者等等.
有没有人对如何做到这一点有任何想法?非常感谢!
编辑:这是剧本的核心,我必须遗漏一些东西.
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
Run Code Online (Sandbox Code Playgroud)
sed行的长列表正在替换XML源中的字符,最后两个是应该用指定字符替换换行符的那些.我知道用另一个换行替换换行似乎是多余的,但这是我能想出来让他们选择自己的分频器最简单的方法.分隔符替换适用于普通字符.
您可以使用bash来反转反斜杠,如下所示:
sed -e "s/\*DIVIDER\*/${DIVIDER//\\/\\\\}/g"
Run Code Online (Sandbox Code Playgroud)
语法是${name/pattern/string}.如果pattern开头/的每一次出现pattern在name被替换string.否则只更换第一次出现.
| 归档时间: |
|
| 查看次数: |
18482 次 |
| 最近记录: |