文本处理
grep
- grep:正则搜索输出。
- grep “内容” file.txt,在file.txt文件中搜索包含”内容”的行,并输出。
- grep -n [abc] file.txt,在file.txt文件中搜索包含”内容”的行,并输出行号。
- ls | grep “\.txt”,在当前目录下查找后缀名为txt的文件。
sed
- sed:流编辑器,用脚本命令处理每一行。
- 常用示例:
- sed -n ‘2,5 p’ file.txt:将file.txt文件中第2到第5行输出。
- sed ‘s/abc/xyz/g’ file.txt:将file.txt文件中所有”abc”替换为”xyz”。
- sed -n ‘/abc/I p’ file.txt:将file.txt文件中包含不区分大小写的”abc”的行输出。
- sed ‘/^$/ d’ file.txt:将file.txt文件中所有空行删除。
- 格式:sed [选项][脚本命令] 文件名
- 常用选项:
- -n:默认不输出,一般结合脚本命令中的p使用。
- -i:直接修改文件内容。
- 常用脚本命令:
- s替换文本,格式:[address]s/pattern/replacement/[flags]
- address,指定行号,如
- 1:首行。
- 3,5:从3到5行。
- 4,$:从4到末行。
- /pattern/:地址支持正则匹配行,区分s后的pattern。
- pattern:要替换的内容,支持正则。
- replacement:替换后的内容。
- flags:
- g:全局匹配,如果没有则只匹配第一个。
- p:输出被替换的行,常和-n选项一起使用。
- I:不区分大小写。
- d删除行,格式:[address]/d
- p输出行,格式:[address]/p
- c替换整行,格式:[address]/c\replacement
- a行后追加,格式:[address]/c\text
- i行前追加,格式:[address]/c\text
awk
- awk:报告生成器,按列处理文本。
- 常用示例:
- awk ‘{print $1}’ file.txt:将file.txt文件中每行的第一个字段输出,使用空白分隔。
- awk -F ‘,’ ‘{sum+=$1} END{print “sum=”,sum}’ file.txt:将file.txt文件中每行的第一个字段相加并输出,使用逗号分隔。
- 格式:awk [选项][脚本命令] 文件名
- 常用选项:
- -F:指定分隔符,默认为连续空白符(包括制表符)。
- -v:定义变量,格式为-v 变量名=变量值。
- 常用脚本命令:
- BEGIN{}:开始处理前执行。
- {}:处理每一行。
- END{}:处理完所有行后执行。