1.删除文件中每行的第二个、最后一个字符
分两次替换操作,第一次替换掉第2个字符,第二次替换掉最后一个字符:
sed ‘s/.//2 ; s/.$//’ nssw.txt
2.将文件中每行的第一个、倒数第1个字符互换
每行文本拆分为“第1个字符”、“中间的所有字符”、“倒数第1个字符”三个部分,然后通过替换操作重排顺序为“3-2-1”:
sed -r ‘s/^(.)(.*)(.)$/\3\2\1/’ nssw.txt
3.删除文件中所有的数字
因原文件内没有数字,行首也没有空格,这里稍作做一点处理,生成一个新测试文件:
sed ‘s/[0-9]//’ nssw.txt
4.为文件中每个大写字母添加括号
使用“()”可实现保留功能,所以可参考下列操作解决:
sed -r ‘s/([A-Z])/[\1]/g’ nssw.txt
5.简述egrep工具的-q选项的含义,并验证其在脚本应用中的价值。
选项-q的作用是静默、无任何输出,效果类似于正常的egrep操作添加了&> /dev/null来屏蔽输出。在脚本中当需要检测文本内是否存在指定的关键词时,可以利用egrep -q的返回状态值来作为判断依据,从而简化&>输出的操作。
6.正则表达式中的+、?、*分别表示什么含义?
这三个字符用来限制关键词的匹配次数,含义分别如下:
+:最少匹配一次,比如a+可匹配a、aa、aaa等
?:最多匹配一次,比如a?可匹配零个或一个a
:匹配任意多次,比如a可匹配零个或任意多个连续的a
7.如何编写正则表达式匹配11位的手机号?
egrep ‘1[0-9]{10}’ tel.txt
8.简述sed定址符的作用及表示方式。
作用:地址符(执行指令的条件)控制sed需要处理文本的范围;不加定址符则逐行处理所有行
表示方式:地址符可以使用行号或正则表达式
9.如何使用sed提取文本中的偶数行?
sed -n ‘2~2p’ 文件
10.如何使用sed删除文本中每行的第4个字符?
sed ‘s/.//4’ 文件
11.简述Linux服务脚本中的case分支结构。
Linux服务脚本通常利用$1位置变量来获取控制参数,并结合case分支来做出不同的响应
12.简述定义一个Shell函数的两种方法。
function 函数名 { 函数名() {
命令序列 命令序列
… … … …
} }
13.简述Shell环境常见的中断及退出控制指令。
break:跳出当前所在的循环体,执行循环体后的语句。
continue:跳过循环体内余下的语句,重新判断条件以便执行下一次循环。
exit:退出脚本,默认返回值是 0。
14.简述预定义变量KaTeX parse error: Can't use function '$' in math mode at position 2: 、$̲?、$0、$#、$*、$!的作… 保存当前运行进程的(PID)号
$? 保存命令执行结果的(返回状态)
$0 保存当前运行的(进程名)或(脚本名)
$# 保存位置变量的(个数)
$* 保存所有位置变量的(值)
$! 保存后台(最后一个进程)的PID号
- 简述三种定界符在变量赋值操作中的特点。
双引号 " ":允许扩展,以 $ 引用其他变量
单引号 ’ ':禁用扩展,即便 $ 也视为普通字符
反撇号:将命令的执行输出作为变量值