shell实现字符串反转

需求

在做关键词清洗过程中,需要将一类不符合某个字结尾的词过滤出来,思路是把这一批词按最后一个字排序,于是想到了先把这些词反转一下,如把12345转为54321,好像以前在夜息的文章里看过用shell可以实现,就百度了一下,找到几个可行的解决方法,现记录一下。

shell实现字符串反转,一句命令搞定!

cat keywords.txt|while read line;do echo $line|rev;done

命令的:

echo 12345|rev

54321

python 的:

echo 12345|python -c 'print raw_input()[::-1]'

sed 的:

echo 12345|sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'

awk 的:

echo 12345|awk 'BEGIN{FS=""}{for(a=NF;a>0;a--)printf("%s",a==1?$a"\n":$a)}'

纯 bash 的:

echo 12345|{ read;for((i=${#REPLY};i>0;i--))do echo -n "${REPLY:$[i-1]:1}";done;echo; };

c 的:

gcc -o a -O2 -x c <(cat <<!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc,char *argv[])
{
       if(argc != 2)
       {
               printf("%s reverse lines of a string\n",argv[0]);
               exit(1);
       }
       int i=0;
       char *p;
       p=argv[1];
       i=strlen(argv[1])-1;
       for(i;i>=0;i--)
       {
               printf("%s%s",&p[i],(i==0)?"\n":"");
               p[i]='\0';
       }
})&& ./a "12345" ;rm -f a

参考网站:http://bbs.chinaunix.net/thread-1729795-1-1.html

  • 版权声明:除非注明,本博客均为北京SEO方法的原创文章,转载或引用请以超链接形式标明本文地址,否则会在SEO圈内公开此种不尊重版权的行为,谢谢合作!本文地址:http://seofangfa.com/shell/rev-string.html
    本文信息:于2年前,由方法SEO发表,共 847字。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: