Shell命令之文本操作
前言
在Linux中,文本处理操作是最常见的,应用非常广泛,如果能熟练掌握,可以大大提高开发效率。
awk/sed/grep是文本操作领域的“三剑客”,学会了这3个命令就可以应对绝大多数文本处理场景。这里,不对这三个命令进行过多的冗余描述,只是记录最常见的几种用法,起个抛砖引玉的作用。详细的文档还请参考官方文档。
特长:
grep 更适合单纯的查找和匹配文本
sed 更适合编辑匹配到的文本,如文本替换
awk 更适合格式化文本,对文本进行比较复杂格式处理
三个命令有些功能是重合的,可以灵活选用。
grep
grep命令最常用,非常适合查找和匹配。结合管道运算符,可以达到非常好的效果。
常用场景:
cat a.txt |grep -i "target"
-i : 忽略大小写。
grep "target" /usr1/your_dir -nR
全局文件内搜索查找,非常实用。
find . -name CMakeLists.txt | xargs grep -i "target_link"
在当前目录下的所有CMakeLists.txt文件中,搜索出所有的“target_link”关键字。
在shell列表中,搜索某个item:
if echo "${BUILD_LIST[@]}" | grep -w "$CPU_TYPE" &>/dev/null; then echo "found in list" fi
sed
未完待续
awk
语法原型:
awk [options] 'program' file1, file2,...
对于上述语法中的program来说,又可以细分成pattern和action,也就是说,awk的基本语法格式如下:
awk [options] 'Pattern{Action}' file
支持的模式匹配