shell 脚本相关

根据处理需求和脚本命令支持能力,进行步骤拆分,并采用相应的命令实现

使用*匹配一段区域时,最好指定起点与终点,比如^,$,空格

echo打印时,在没有开启'-e'选项时,

'\'后面如果是普通字符,最终输出会打印'\'; echo "\" \n" 会输出 " \n

'\'后面如果不是普通字符,最终输出不会打印'\' echo "\` \\" 只会输出 ` \

echo 打印字符串中有空格会被置换成换行打印输出。

分类操作时,直接匹配目标特征去抓取,通常会过滤掉意想不到的干扰类,

举例说明:一个文件中所有行分为3类,含有include字符、含有双引号、其它;当目标类别是含双引号的行,最好的方法是直接匹配双引号,而不是逐个删除include等其它类别,这样避免忽略掉的其他类别混入最终结果中。

删除重复行,先排序,然后用uniq命令。不排序的化可能会依然残留相同行

根据行号删除指定行: sed -i '1d' a.txt 删除首行; sed -i '$d' a.txt 删除尾行; sed -i '1,5d' a.txt 删除1到5行

根据匹配字符串删除指定行: sed -i '/St0/d' a.txt

对匹配字符串修改: sed -i 's/St0/abc/' a.txt 将St0替换成abc sed -i 's/St0./a&b/' a.txt 将St0替换成aSt00b,其中'&'表示匹配到的字符串,因为命令里用'.'进行匹配,匹配结果可能是多个

文件或命令执行结果转为变量: var=(cat a.txt) 文本转变量; var=(sed -i '1d' a.txt) 命令结果转变量

字符串变量中根据编号选取指定部分: $(var:1:3) 选取var变量中从第1个字符开始的连续3个字符串

实现任意进制向二进制转换: ((16#10)) 16进制10H转为十进制; ((2#1010)) 2进制1010B转为十进制

输入升序数字序列(10进制) : seq 100 (vim下输入: r !seq 100)

输入降序数字序列(10进制) : seq 100 | sort -nt

sort -r 排序是根据每行首字符的ascii码值进行排序;想要根据行号排序可以先通过cat -n file 将行号引入,再用sort排序后,删除行号的思路

**连续编辑 -e :**sed -e "2d" -e "s/last/new/"

多行合并成一行: sed -i ":a;N;s/\\n//g;ta" test.gson

shell中脚本参数传递: bash test.sh param1 将'param1'作为参数传递到脚本内部,使用时用$1获取

too many arguments 问题: 一个常见原因是在问题命令中,有一个变量为空,空结果造成了命令的非法,比较稳妥的做法是给变量加上双引号后再使用,如"$1"

if、case语句写法:

if 条件 ; then if 条件 ; then if 条件 ; then if 条件 ; then case $var in

fi else elif 条件 ; then elif 条件 ; then mode1 | mode2) command1 ;;

fi fi else mode3 ) command2 ;;

fi * ) default command ;;

esac

数组声明: array_test=(1 2 3) for i in {array_test\[@\]} do echo "i" done 将数组中元素依序逐个打印输出

根据行号截取文件的部分或全部内容: cat file | tail -n +1 | head -n 10 > file1 截取file中从第1行开始的10行输出到file1中

替换思路: 逐个元素的遍历替换 (用for循环对单个元素替换); 总结所有可能的替换组合(用for循环对某种替换形式全局替换)

例如: 在一个文件中全是两位的16进制数据,需要转换成10进制;可以逐个元素进行16 > 10转换,也可以从可能的256种替换形式出发逐个替换;权衡替换的次数和单次替换的工作量,用较优的一方实现

\^0-3,x-z: 非0到3,x到z的字符

混淆疑问点:

单引号、双引号差异: '' 与"" 不同括号差异: ()、\[\]、{}、\[] 转变量方式: var=`命令` 与 var=$(命令)

相关推荐
JIAOZHANZHISHIKU3 小时前
机器人外壳粘接性价比怎么选?3M VHB 胶带与结构胶解决方案
经验分享·机器人·工业胶粘剂·3m胶粘剂
海绵宝宝的月光宝盒8 小时前
14-AutoCAD-阵列命令应用与案例实战(AR)
经验分享·笔记·自动化·课程设计·制造·学习方法·cad
by2099911 小时前
Linux GCC/G++ 编译与 Makefile 构建
linux·运维·服务器·经验分享
姚瑞南12 小时前
【PRD】招投标商机雷达爬虫系统
人工智能·经验分享·笔记·爬虫·产品运营·产品经理
m0_7196408713 小时前
高校人工智能实验室搭建,2026年具身智能科研设备适配建议
人工智能·经验分享
康谋自动驾驶17 小时前
安全成为汽车“生命线”,康谋aiSim如何支撑组合驾驶辅助安全落地?
经验分享·智能驾驶
虹科数字化与AR17 小时前
安宝特方案丨汽车制造质检三步走:从导入CAD到数字化报告,一台iPad全搞定
经验分享·cad
辰辰观影17 小时前
外挂字幕播放器推荐
经验分享
如期生物18 小时前
CLIP-qPCR与CLIP-seq实验:解析RNA结合蛋白与靶RNA的相互作用
经验分享
迪康coolmu18 小时前
金融客户数据合规落地:基于迪康端点安全一体化管理系统的四道防线实践
运维·服务器·数据库·经验分享·安全·网络安全·金融