文本处理三剑客 # day20
2、文本处理三剑客
sed
流式编辑器,主要擅长对文件的编辑,我们可以事先定制好编辑文件的指令,然后让sed自动完成对文件的整体编辑(非交互环境)
格式:sed -r '定位+命令' 文件路径 #没有定位则代表文本所有内容,没有命令或定位于命令都没有则默认显示文本内容。
定位:
行定位:
#sed -r '2p' 1.txt #其中2是定位到第几行,p是命令print
#sed -r '2,4p' 1.txt #打印2-4行的内容
#sed -r '2p;4p' 1.txt #打印第2行与第4行的内容
#sed -r '2,$p' 1.txt #打印第2行到最后一行的内容
正则定位:
格式://+命令
sed -r '/y/d' 1.txt #删除1.txt中含有y的行
sed -r '/^y/d' 1.txt #删除1.txt中以y开头的行
sed -r '/y&/d' 1.txt #删除1.txt中以y结尾的行
命令:
p 定位+p #表示打印命令print
d 定位+d #删除命令del
c 定位+c 替换的内容 #改变命令change,这里的替换是以行来定位
s 定位+s/old/new/(g) #替换命令,这里的替换可以定位到行里面具体的位置
set -ri #覆盖回源文件,一般改的时候在sed -r里修改,确定好修改内容之后再在r后加i覆盖回源文件。
awk
主要用于处理有格式的文本,例如/etc/passwd这种以:连接的这种文本
格式:awk -F分割符 '定位+{命令 $列}' 文件路径 #以空格为分割符的文件-F可以省略
定位:
不写默认为所有行
行定位:
1.NR>=n行 #定位大于n行的所有行
2.NR<=n行 #定位小于n行的所有行
3.NR>=n行 && NR<=m行 #其中m必须大于n,定位大于n小于m的行,&&表示and且
4.NR>=n行 || NR<=m行 #m小于n,定位大于n的行与小于m的行,||表示or或
正则定位:
格式'/以文本信息定位到行/gi{命令}' #g表示所有文本内容,i是表示忽略大小写
1.
命令:
print awk -F: '{print NR,$n,$m,NF}' #打印第n列和第m列,NR表示打印出每一行的行号,NF表示打印出每行共有多少列
awk -F: '{print $(NF-1)}' #打印每一行的倒数第二列
事实上awk是一门编程语言,可以独立完成很强大的操作。
grep
擅长过滤内容
格式:
grep -in 'string' 文件路径 #会筛选出文件路径下包含string的行,显示出来并将要筛选的内容比标红。其中n代表打印出筛选内容的行号,i表示string筛选结果不受大小写的限制,l则表示如果匹配成功,则只将文件名打印出来,失败则不打印。
grep -rl 'string' 文件路径 #将文件路径下的所有文件中含有string的文件都筛选出来,并将文件所在的文件路径都打印出来
#可以用来记住关键字,词通过grep查找出文件所在的路径,方便查找。

浙公网安备 33010602011771号