最近系统学习了shell编程.

看到书本里面的一个例子,很屌.之前自己也想过,但是没有得到结果.

相信同学们也猜到这个例子了,就是一行字符串的遍历.在看答案之前,同学们可以自己尝试一下.

这里我总结了三种方式.仅供参考.

1. 首先当然是书本里面的内容:

echo jalsdfjlasjdl | sed "s/[^\n]/&\n/g"

这个例子的输出就是把每个字符都单独成为一行了.

sed语句相信同学们都不陌生.唯一让人疑惑的可能就是&符号的使用.其实结合这个句子,也能够理解了.就是替代前面匹配的最小单位.[^\n]即匹配任何一个不是换行的字符.那么最小的单位自然就是单个字符.

2. 使用字符串拓展.代码如下:

#!/bin/bashstr="love you jingjing"for i in `seq ${#str}`
do
echo ${str:$i-1;1}
done

在这段代码中,使用了大括号的拓展.第一个${#str}.代表str的长度.第二个${str:$i-1:1}意思是取str字符串的第i-1个位置的1个字符.

所以这里的打印自然也是按行打印出每个字符.这里我不知道怎么去解释为什么直接写$i-1都可以.我以为会报错.

3. 使用awk.这个是也不是完全自己的思考.也是通过借鉴资料总结的.

echo "love you jingjing " | awk -F "" '{for (i=1;i<=NF;i++) {print $i}}'

其实如果真的了解awk这段代码也不是很难.难点在于我不知道""两个双引号挨着表示的就是没有分隔符,所谓没有,也就是空就是分隔符.太拗口了

理解了这个点,其它内容也就可以理解了.

是不是开始联想了.拆分成两个或以上怎么弄.

sed的方法:echo alksfdjals | sed "s/[^\n]\{2\}/&\n/g"

字符串拓展的方式:

#!/bin/bash -xalai="love you jingjing"for ((i=0;$i<=${#alai};i=$i+2));
do echo ${alai:$i:2};
done

这段代码里面使用了小括号的特殊用法,即两个小括号连着,可以随意进行运算.我个人美其名曰c语言形式.

总结了这么几个思路用了好几天,而且都不是独立思考的,都或多或少的借鉴了别人或者书本上面的思路.虽然消化了.但是未免有点缺少独立的精神.

同学们在看了这篇文章以后,有没有自己的不同的思路呢

shell中遍历字符串相关推荐

  1. shell中(字符串截取)

    cut是以每一行为一个处理对象的,这种机制和sed是一样的.(关于sed的入门文章将在近期发布) 2 cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切内容呢? cut命令主要是接 ...

  2. (转)Shell中获取字符串长度的七种方法

    Shell中获取字符串长度的七种方法 原文:http://blog.csdn.net/jerry_1126/article/details/51835119 求字符串操作在shell脚本中很常用,下面 ...

  3. Shell中判断字符串是否为数字的6种方法

    Shell中判断字符串是否为数字的6种方法 #!/bin/bash # 方法1 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]* ...

  4. c语言中按照“|”字符串截取,shell中取字符串子串的几种方式 截取substr

    echo "123456789" | awk '{print substr($0,5,2)}' 截取 1)awk中函数substr substr(源字符串,开始索引,长度)   开 ...

  5. linux中特殊符号分割,Shell_Linux Shell 中实现字符串切割的几种方法

    我们在shell 脚本编程中,经常需要用到字符串切割,即将字符串切割为一个数组,类似java 中的split 函数,下面对几种常见的方式做一个总结. 参考文章: shell 使用指定的分割符来分割字符 ...

  6. linux去除字符串的空格符,Shell中去除字符串前后空格的方法

    经常碰到的场景,需要去除字符串中的前后的空格.在Shell中不像其他语言有strip()来处理,不过也是可以使用诸如awk等命令来处理. 下面是一个简单示例: [root@localhost ~]# ...

  7. shELL中的字符串处理(转)

    Shell的字符串处理 Shell的字符串处理 1 得到长度 %x="abcd"   #方法一       %expr length $x       4   # 方法二      ...

  8. mysql遍历字符串字符的函数_在MySQL中遍历字符串

    一.当字符串之间没有分隔符 遍历字符串时我们需要一个辅助表与原表做连接查询 辅助表中的数字就是表示字符串中各个字符的位置 要求该辅助表必须有足够多的行数保证循环操作的次数 例:把emp表中等于king ...

  9. Python中遍历字符串和字典

    遍历字符串 >>> for x in "ILoveYou":print(x)I L o v e Y o u 遍历字典 遍历所有key两种方式 >>&g ...

最新文章

  1. CentOS 7最小安装之后应该尽快做好的几件事情
  2. iptables使用ipt_connlimit限制连接数
  3. 在ASP.NET MVC5中使用特性路由
  4. linux下php安装redis,Linux下php安装redis和phpredis库
  5. 基于.net standard 的动态编译实现
  6. [蓝桥杯2019初赛]等差数列-数列
  7. ASP.NET Web API 开篇示例介绍
  8. C#鼠标点击器-没有测试-转自http://hi.baidu.com/syq_ghost/item/2cc253eb538b72e7fb42ba44
  9. 【综述】Google团队发布,一文概览Transformer模型的17大高效变种
  10. 如何用大数据开发套件周期调度机器学习算法
  11. JavaScript高级程序设计——开篇前言
  12. P8842 [传智杯 #4 初赛] 小卡与质数2 题解
  13. [转载] 羽毛球——学打羽毛球 04 正手发高远球
  14. 如何快速复制文件或文件夹路径?
  15. 微信小程序 基本认识
  16. 如何使用计算机远程关闭手机软件,如何使用手机远程遥控电脑关机?手机遥控电脑关机方法图文介绍...
  17. 删除文件名含有特殊字符的文件
  18. word中Visio的mathtype公式显示模糊问题
  19. mybatis postgre timestamp
  20. 2021年全球与中国先进的CT机行业市场规模及发展前景分析

热门文章

  1. 10_Linux ARM架构-离线部署 Docker + MongoDB-银河麒麟V10操作系统
  2. PHP查询附近的人及其距离的实现方法
  3. 功能性JavaScript中的过滤和链接
  4. Week8 作业 C - 班长竞选 SCC Kosaraju HDU - 3639
  5. C/C++语言ODBC连接SqlServer数据库
  6. PMP : PMP备考心得 (1)
  7. 样本空间与事件集合,事件间的关系——概率论与数理统计(宋浩)
  8. Java小游戏-俄罗斯方块
  9. 每个程序员都应该了解的 CPU 高速缓存 英文原文:Memory part 2: CPU caches
  10. 分词工具与方法:jieba、spaCy等