less than 1 minute read

1 文本分割

1.1 正则

没有空格

#!/bin/bash
var=’1,2,3,4,5’
var=${var//,/ }    # 将 var 中的,替换为空格
for element in $var
do
    echo $element
done

有空格

echo 'mark:x:0:0:this is a test user:/var/mark:nologin' |cut -d ":" -f i # 输出第 i 个字符

不定长字符串分割

1.2 cut

按字符-c,字节-b或字段-f(此时要使用 -d 指定分割符,默认是 tab键)分割文本;最后跟索引(i、i-、i-j、-j);
-s 是在使用 -f 时,不输出没有分割符的行;

2 文件内容处理

2.1 替换

-e 输出到屏幕,-i 替换原文件,/ 替换地一个, /g 替换所有*
sed -e 's/old/new/' myfile # 替换第一个 old
sed -i 's/old/new/g' `grep old -rl --include="m*" ./` # 处理所有 m 开头且包含 old 的文件

TOP

附录

A 参考资料

  1. linux shell 字符串操作(长度,查找,替换)详解

B 代码示例

不定长字符串分割

#!/bin/bash
user=’mark:x:0:0:this is a test user:/var/mark:nologin’
i=1
while((1==1))
do
        split=`echo $user|cut -d ":" -f$i`
        if [ "$split" != "" ]
        then
                ((i++))
                echo $split
        else
                break
        fi
done

Comments