10.1 字符串处理
字符串长度
$
$expr length $string
expr length $stringexpr "$string" : '.*'
expr "$string" : '.*'stringZ=abcABC123ABCabc
echo ${#stringZ} # 15
echo `expr length $stringz` # 15
echo `expr "$stringZ" : '.*'` # 15#!/bin/bash
# paragraph-space.sh
# 版本 2.1,发布日期 2012年7月29日
# 在无空行的文本文件的段落之间插入空行。
# 像这样使用: $0 <FILENAME
MINLEN=60 # 可以试试修改这个值。它用来做判断。
# 假设一行的字符数小于 $MINLEN,并且以句点结束段落。
#+ 结尾部分有练习!
while read line # 当文件有许多行的时候
do
echo "$line" # 输出行本身。
len=${#line}
if [[ "$len" -lt "$MINLEN" && "$line" =~ [*{\.}]$ ]]
# if [[ "$len" -lt "$MINLEN" && "$line" =~ \[*\.\] ]]
# 新版Bash将不能正常运行前一个版本的脚本。Ouch!
# 感谢 Halim Srama 指出这点,并且给出了修正版本。
then echo # 在该行以句点结束时,
fi #+ 增加一行空行。
done
exit
# 练习:
# -----
# 1) 该脚本通常会在文件的最后插入一个空行。
#+ 尝试解决这个问题。
# 2) 在第17行仅仅考虑到了以句点作为句子终止的情况。
#+ 修改以满足其他的终止符,例如 ?, ! 和 "。起始部分字符串匹配长度
expr match "$string" '$substring'
expr match "$string" '$substring'expr "$string" : '$substring'
expr "$string" : '$substring'索引
expr index $string $substring
expr index $string $substring截取字符串(字符串分片)
${string:position}
${string:position}${string:position:length}
${string:position:length}expr substr $string $position $length
expr substr $string $position $lengthexpr match "$string" '\($substring\)'
expr match "$string" '\($substring\)'expr "$string" : '\($substring\)'
expr "$string" : '\($substring\)'expr match "$string" '.*\($substring\)'
expr match "$string" '.*\($substring\)'expr "$string" : '.*\($substring\)'
expr "$string" : '.*\($substring\)'删除子串
${string#substring}
${string#substring}${string##substring}
${string##substring}${string%substring}
${string%substring}${string%%substring}
${string%%substring}子串替换
${string/substring/replacement}
${string/substring/replacement}${string//substring/replacement}
${string//substring/replacement}${string/#substring/replacement}
${string/#substring/replacement}${string/%substring/replacement}
${string/%substring/replacement}Last updated