shell中遍历字符串
来源:互联网 发布:自然语言处理数据挖掘 编辑:程序博客网 时间:2024/06/06 02:31
最近系统学习了shell编程.
看到书本里面的一个例子,很屌.之前自己也想过,但是没有得到结果.
相信同学们也猜到这个例子了,就是一行字符串的遍历.在看答案之前,同学们可以自己尝试一下.
这里我总结了三种方式.仅供参考.
1. 首先当然是书本里面的内容:
echo jalsdfjlasjdl | sed "s/[^\n]/&\n/g"
这个例子的输出就是把每个字符都单独成为一行了.
sed语句相信同学们都不陌生.唯一让人疑惑的可能就是&符号的使用.其实结合这个句子,也能够理解了.就是替代前面匹配的最小单位.[^\n]即匹配任何一个不是换行的字符.那么最小的单位自然就是单个字符.
2. 使用字符串拓展.代码如下:
#!/bin/bashstr="love you jingjing"for i in `seq ${#str}`doecho ${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中遍历字符串
- Shell 遍历字符串与参数
- shell怎样循环遍历字符串
- shell中获取字符串长度的方法,获取数组元素个数,获取数组元素,数组遍历
- shell script循环遍历字符串数组
- shell中 字符串截取
- shell中拆分字符串
- shell中截取字符串
- shell中字符串拼接
- shell中字符串操作
- shell中处理字符串
- shell中字符串的处理
- shell中字符串的比较
- Shell中比较字符串大小
- shell中(字符串截取)
- shell脚本中截取字符串
- shell中字符串的截取
- shell中字符串处理方式
- SharePoint JS Link 之(五)关于JSLink的一些FAQ
- MySQL日期类型DATETIME和TIMESTAMP
- 软件测试与产品线上服务能力
- LwIP tcp/ip socket编程listen函数分析
- (九)Spring核心框架 - AOP之动态代理机制
- shell中遍历字符串
- 工厂设计模式
- 解决拒绝本地登录
- 【转载】Java之美[从菜鸟到高手演变]之设计模式四
- 邮件编码问题汇总(不定期更新)
- 感叹2014这样的流年
- 函数放在头文件中被多次包含的重定义问题
- 【C语言】C语言基础知识1. tip01~10
- ios中利用委托在二个视图间传值