首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用正则表达式来反转bash脚本中的文本?

问如何使用正则表达式来反转bash脚本中的文本?
EN

Stack Overflow用户
提问于 2012-03-14 14:58:30
回答 5查看 681关注 0票数 0

例如:

代码语言:javascript
复制
ip_a="172.31.50.48"

反转为

代码语言:javascript
复制
ip_r="48.50.31.172" << use regex on this line for evaluate text then assign to ip_r

或域名

代码语言:javascript
复制
domain_a="www.linux.org"

反转为

代码语言:javascript
复制
domain_r="org.linux.www" << use regex on this line for evaluate text then assign to domain_r
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-14 15:11:56

代码语言:javascript
复制
ip_a="172.31.50.48"
ip_r=`echo $ip_a | awk '{n=split($0,A,".");S=A[n];{for(i=n-1;i>0;i--)S=S"."A[i]}}END{print S}'`
domain_a="www.linux.org"
domain_r=`echo $domain_a | awk '{n=split($0,A,".");S=A[n];{for(i=n-1;i>0;i--)S=S"."A[i]}}END{print S}'`
echo $ip_r
echo $domain_r

输出

代码语言:javascript
复制
48.50.31.172
org.linux.www
票数 2
EN

Stack Overflow用户

发布于 2012-03-14 15:57:21

纯Bash,正如Agrajag所描述的:

代码语言:javascript
复制
IFS='.'
array=( $ip )
n=${#array[@]}
for (( i=0; i<$((n/2)); i+=1 )); do
    save=${array[i]} 
    array[i]=${array[n-i-1]}
    array[n-i-1]=$save
done

printf "%s\n" "${array[*]}"
票数 5
EN

Stack Overflow用户

发布于 2012-03-14 19:29:55

这可能对你有用:

代码语言:javascript
复制
ip_a="172.31.50.48"
domain_a="www.linux.org"
ip_r=$(sed 'G;:a;s/\([^.]*\)\.\(.*\n\)/\2.\1/;ta;s/\n//' <<<$ip_a)
domain_r=$(sed 'G;:a;s/\([^.]*\)\.\(.*\n\)/\2.\1/;ta;s/\n//' <<<$domain_a)
echo -e "$ip_r\n$domain_r"
48.50.31.172
org.linux.www
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9697268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档