linux文本处理命令
2015-07-29 22:38
435 查看
基础学习——linux文本处理命令
sed、grep、find、xargs
sed
1. 替换文件内容sed -i "s/test01/test02/g" `grep -rl test01 /home/forum`
说明:在/home/forum目录下,grep出含有test01字符串的文件,然后把test01替换成test02
2. sed替换换行符
sed命令从文本流中读取一行命令到模式空间进行相应处理,因此在处理换行时,有些特殊。
echo "a,b,c,d" | sed 's/,/\n/g' #将字符串a,b,c,d中的逗号替换成换行符 echo "a,b,c,d" | sed 's/,/\n/g' | sed 's/\n/,/g' # 后面这个sed没有生效
说明:sed读取一行时,会先把换行符去掉,命令处理完后,再加上。所以无法使用上面这个命令(sed 's/\n/,/g')进行换行符替换。
使用下面的命令,可以将换行符进行替换:
sed ':label;N;s/\n/,/;b label' filename sed ':label;N;s/\n/,/;t label' filename
说明:该命令可以实现将文本中的所有换行进行替换,上面例子中,将换行替换成逗号。
:label; 这是一个标签,用来实现跳转处理,名字可以随便取(label),后面的b label就是跳转指令
N; N是sed的一个处理命令,追加文本流中的下一行到模式空间进行合并处理,因此是换行符可见
s/\n/:/; s是sed的替换命令,将换行符替换为冒号
b label 或者 t label b 或t 是sed的跳转命令,跳转到指定的标签处
实际应用eg:
echo "a,b,c,d" | sed 's/,/\n/g' | sed ':x;N;s/\n/,/g;b x' #后面这个sed可以将换行替换成','
grep
1. grep 参数-l 表示只输出包含匹配字符的文件名
find
1, 排除查找某类文件find . ! -name "*.svn-base" | xargs grep g6y8LQV9ZJgj --col
说明: 找出当前目录中后缀名不为.svn-base的文件,然后从这些文件中查找含有字符串g6y8LQV9ZJgj 的文件。
2.按指定目录深度查找
find . -maxdepth 1 -name '*' #只在当前目录查找 find . -naxdepth 1 type f #查找当前目录中的文件
说明:maxdepth后面的参数值,表示距当前目录指定的深度,1表示当前目录,2表示一级子目录,以此类推。如果没有指定maxdepth参数,find会查找当前目录及其所有子目录下的文件。
xargs
该命令主要功能是:从输入中构建和执行shell命令。xargs默认以空白字符 (空格, TAB, 换行符) 来分割记录
1. 与find命令结合
find -name '*.log' | xargs rm #找到当前目录及其子目录中的.log文件,然后删除 find -name '*.log' -print0 | xargs -0 rm #作用同上
说明:-print0 表示 find命令在打印出一个文件名之后接着输出一个 NULL 字符 ('') 而不是换行符, 然后再告诉 xargs 也用 NULL 字符来作为记录的分隔符
2. xargs -i 参数
find . -name '*.bak' | xargs -i cp {} ../ #find找到后缀为.bak的文件,然后将这些文件cp到上一层目录
说明:xargs后面加上-i参数,直接用{}代替管道之前的标准输出的内容。
相关文章推荐
- Linux下文件夹相关操作
- archlinux开机自启动优化
- centos下的svn安装(服务端)
- CentOS下使用yum安装Git具体步骤
- strncpy 引起的思考,重新认识了strncpy这个函数
- LINUX 基本命令 参照用
- 每天一个linux命令(15):tail 命令
- linux系统编程之进程(八):守护进程详解及创建,daemon()使用
- Linux 硬链接和软连接的区别
- 【linux高级程序设计】(第十一章)System V进程间通信 3
- linux权限控制机制
- linux之例行性工作排程:crontab学习
- 关于linux中c语言的编译问题的总结
- 把握linux内核设计思想(八):进程管理分析
- Linux 如何使用gdb 查看core堆栈信息
- 把握linux内核设计思想(七):内核定时器和定时执行
- 把握linux内核设计思想(六):内核时钟中断
- linux 自带的多路径
- linux vi 编辑后保存
- linux防火墙基础和管理设置iptables规则