linux有很多命令可以对字符串进行操作,譬如awk,sed,但是在shell脚本如果能使用bash内建的操作符完成操作就尽量不要使用外部命令,因为外部命令通常都需要fork出一个单独的进程来执行,这会降低脚本执行效率;
1.获取字符串长度
$ str="hello world"
$ echo ${#str}
11
我们用awk实现同样的功能
$ str="hello world"
$ awk -v s="$str" 'BEGIN {print length(s)}' #注意$str两边的双引号不能省略
11
2.截取子串
bash语法: |
${字符串:positon} |
${字符串:positon:length} |
bash中字符串下标从0开始,若不指定长度,默认截至的最后一个字符
$ str="abcdefghijk"
$ echo "${str:2}"
cdefghijk
$ echo "${str:2:5}"
cdefg
我们用awk实现同样的功能(awk中字符串下标从1开始):
$ str="abcdefghijk"
$ awk -v s="$str" 'BEGIN {print substr(s,3)}'
cdefghijk
$ awk -v s="$str" 'BEGIN {print substr(s,3,5)}'
cdefg
3.字符串替换
bash语法: |
${字符串/pattern/replacement} #使用$replacement来替换第一个匹配的$pattern |
${字符串//pattern/replacement} #使用$replacement来替换所有匹配的$pattern |
注意:这里的pattern 支持bash通配符(不支持正则)
$ str="a1b1c1"
$ echo "${str/1/--}"
a--b1c1
$ echo "${str//1/--}"
a--b--c--
我们用awk实现同样的功能:
$ str="a1b1c1"
$ awk -v s="$str" 'BEGIN {gsub("1","--",s); print s}'
a--b--c--
关于字符串替换,还有2点要说明:
1.gsub支持正则(扩展正则),比如上面的例子我们还可以写成:
awk -v s="$str" 'BEGIN {gsub(/[0-9]+/,"--",s); print s}'
2.bash字符串替换还支持定址:
${字符串/#substring/replacement} #若substring出现在开头,则替换 |
${字符串/%substring/replacement} #若substring出现在末尾,则替换 |
$ str="ba1b1c1"
$ echo ${str/a/--}
b--1b1c1
$ echo ${str/#a/--}
ba1b1c1
分享到:
相关推荐
bash写的字符串常用函数,这个可以看看。资源分就免了
NULL 博文链接:https://lujinan858.iteye.com/blog/437004
本文档是自己总结的关于 bash shell 的字符串的操作合集, 并生成了可以复制内容的pdf 以保持排版
该文档介绍了shell编程中对字符串处理的一些基本命令, 如sed, cut, awk等等
主要介绍了Bash Shell字符串操作总结,包含取长度、截取、查找位置、替换等等,需要的朋友可以参考下
本文由TinyLab.org原创。 本文是自由书籍《Shell编程...第三、对串的常规操作:求子串、插入字符、删除字符、置换字符、字符串的比较等。 第四、对串的一些比较复杂而有趣的操作,这里将在最后介绍一些有趣的范例。
细绳 用Bash编写的字符串处理程序。使用它source path/to/string/source.bashawk -F : ' {print $5} ' /etc/passwd | string_title可用功能 string_camelcase_underscore string_lower 小写的字符串。 传递字符串...
builtin命令用于执行指定的bash内建命令, builtin命令调用的bash内建命令优先于同名的外部命令及同名的shell函数。 返回该内建命令执行的返回值,除非传递的不是bash内建命令或该内建命令被禁用。 语法格式: ...
bash 内建命令 更好地掌握linux
linux bash字符串处理大全,需要的朋友可以参考下
学习git和gitbash使用的一些详细操作,学习git和gitbash使用的一些详细操作
字符串的基本操作 脚本 1 # 声明字符串 str01=str01 echo ${str01} # 单引号也可以 # 不过后面的例子, 通常是用 双引号, 具体原因, 以后会解释\nstr02='str02' echo ${str02} # 对引号的转义, 这里就不提了 2. ...
可重用的Bash函数的集合,用于处理日志,断言,字符串操作等常规任务,以及更多Bash Commons。此仓库包含可重用的Bash函数的集合,用于处理诸如日志,断言,字符串操作等常见任务。 我们试图为我们的Bash脚本带来更...
需要对字符串查找其中某个字符最后出现的位置,这个在PHP (strrpos)或者Perl (rindex)里面都有现成函数可用的功能,在Shell里面居然一时想不出个道道来。在论坛上发贴也没人解答(不知道是问题太简单还是真的很高深...
Bash Shell提供了很多字符串和文件处理的命令。如awk、expr、grep、sed等命令,还有文件的排序、合并和分割等一系列的操作命令。grep、sed和awk内容比较多故单独列出,本文只涉及字符串的处理和部分文本处理命令。
Bash API文档。Bash是GNU操作系统的外壳程序或命令语言解释器。当前,它几乎可以在Unix的每个版本和其他一些操作系统上运行-MS-DOS,OS / 2和Windows平台存在独立支持的端口。
Git Bash常用操作命令,包括基本的pull push merge操作等