Day27
sed命令续
sed命令的其他选项
a:行下追加
i:行上添加
c:替换整行
处理多行文本
修改后文本有多行的时候
以换行符\n分隔或者,使用\强制换行
Sed中s替换的高级应用
1)删除文件中每行的第二个、最后一个字符
sed ‘s/.//2;s/.$//’ test 分两个步骤完成,中间用分号
隔开,第一步将每行的第二个任意字符替换成空,第二
步将每行的最后一个任意字符替换成空即可
2)删除文件中所有的数字
sed -i ‘s/[0-9]//g’ test 先找到任意数字,然后都替换成空
3)将文件中每行的第一个、倒数第1个字符互换
echo abc > abc //创建素材
sed -r ‘s/(a)(b)©/\3\2\1/’ abc //替换abc时复制每一个字符,后面替换的内容用\数字粘贴,可以任意调换位置
echo xyz >> abc //追加内容
sed -r ‘s/(a)(b)©/\3\2\1/’ abc //再用之前的方法无法替换第2行
sed -r ‘s/(.)(.)(.)/\3\2\1/’ abc //将具体字符用 . 替代即可将文档中的xyz修改成xyaz时,上述方案失灵
sed -r ‘s/^(.)(.*)(.)KaTeX parse error: Undefined control sequence: \3 at position 2: /\̲3̲\2\1/' abc //…/\3\2\1/’ test //达成需求
4)为文件中每个大写字母添加括号
sed -r ‘s/([A-Z])/(\1)/g’ test //先找到任意大写字母,然后保留,最后替换成带括号的状态
awk命令解析
awk编程语言/数据处理引擎
基于模式匹配检查输入文本,逐行处理并输出
通常用在shell脚本中,获取指定数据
单独用时,可对文本数据做统计
主要用法
格式1:前置命令 | awk 【选项】 ‘【条件】{指令}’
格式2: awk 【选项】 ‘【条件】{指令}’ 文件 ……
选项:-F: 指定分隔符,可省略(默认空格或Tab)
{print}:输出,必须在{}里面使用
awk内置变量
有特殊含义直接使用
用途 | |
---|---|
FS | 保存或设置字段分隔符 |
$n | 指定分割的第n个字段 |
$0 | 当前读入的整行文本内容 |
NF | 记录当前处理行的字段个数(列数) |
NR | 记录当前已经读入行的数量(行数) |
awk的任务处理时机
在所有行前处理,BEGIN{}
读入第一行文本之前执行
一般用来初始化操作
逐行处理{}
逐行读入文本执行相应的处理
是最常见的编辑指令块
在所有行后处理,END{}
处理完最后一行文本后执行
一般用来处理输出处理结果