Shell脚本学习——字符串处理

最近在做很多的字符串处理的工作,主要用的还是excel,但是很费神,总是Ctrl+C和Ctrl+V。就想用shell脚本对对应的字符串进行批量处理。

1)首先是读取文件中的每一行字符串

使用cat和while来读取file文件中的每一行,并输出到target文件中。

cat $file | while read LINE
do
    echo $LINE >> $target
done

2)判断字符串是否含有特定的字符

"=~"正则式匹配符号,"_"就是要匹配的对象,也可使替换为其他的符号。

if [[ $LINE =~ "_" ]]; then
    echo "It contains the '_'"
else
    echo "It does not contains the '_'"
fi

2)替换"_"字符

使用sed命令删除"_"。

sed -i 's/_//g' $target

3)首字母大写

找到每行的首字母^\w和"_"之后的首字母\_\w,然后替换为大写字母\U&。

\w 相当于 [a-zA-Z0-9] 。\U将后面的字符转换成大写,&指前面匹配的内容,下面sed的作用是将行首字母或者是_后面每个单词的首字母转换成大写。

sed -i 's/^\w\|\_\w/\U&/g' $target

4)判断只有数字的行

if [ -n "$(echo $LINE | sed -n "/^[0-9]\+$/p")" ]; then
    ehco "This line is number"
fi

5)字符串转换为小写

注意tr之后的'A-Z'和'a-z'有空格。

echo $LINE | tr 'A-Z' 'a-z'

下面是我编写的脚本,与大家共享,欢迎大家拍砖。

cat $file | while read LINE
do
        if [ -n "$(echo $LINE | sed -n "/^[0-9]\+$/p")" ]; then
                echo "~~~~~~~~~~~~~~~~~~~~$LINE~~~~~~~~~~~~~~~~~~~" >> $target
        else
                if [[ $LINE =~ "_" ]]; then
                        lowercase=$(echo $LINE | tr 'A-Z' 'a-z')
                else
                        lowercase=$LINE
                fi
                echo ${lowercase}HelpId >> $target
                sed -i 's/^\w\|\_\w/\U&/g' $target
                sed -i 's/\s\w/\U&/g' $target
                sed -i 's/_//g' $target
        fi
done

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值