sed命令速成(find、grep)
sed命令行格式为:
sed [-nefri] ‘command’ 输入文本
常用选项:
-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e∶直接在指令列模式上进行 sed 的动作编辑 (通常用于调试在屏幕输出打印效果,不改变原文件);
-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
-i∶直接修改读取的档案内容,而不是由屏幕输出(改变原文件)。
常用命令:
a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
举例:(假设我们有一文件名为 filename)
显示某行
[root@localhost home] # sed -n '1p' filename #显示第一行 [root@localhost home] # sed -n '$p' filename #显示最后一行 [root@localhost home] # sed -n '1,2p' filename #显示第一行到第二行 [root@localhost home] # sed -n '2,$p' filename #显示第二行到最后一行
模式查询
[root@localhost home] # sed -n '/pig/p' filename #查询包括关键字pig所在所有行 [root@localhost home] # sed -n '/\$/p' filename #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义
删除某行
[root@localhost home] # sed '1d' filename #删除第一行 [root@localhost home] # sed '$d' filename #删除最后一行 [root@localhost home] # sed '1,2d' filename #删除第一行到第二行 [root@localhost home] # sed '2,$d' filename #删除第二行到最后一行
增加一行或多行字符串
[root@localhost home] # sed '1a drink tea' filename #第一行后增加字符串"drink tea" [root@localhost home] # sed '1,3a drink tea' filename #第一行到第三行后增加字符串"drink tea" [root@localhost home] # sed '1a drink tea\nor coffee' filename #第一行后增加多行,使用换行符\n [root@localhost home] # sed -i '/pig/a\drink tea' filename #在pig字符串所在行后,添加一行“drink tea” [root@localhost home] # sed -i '/pig/i\drink tea' filename #在pig字符串所在行前,添加一行“drink tea”
代替一行或多行
[root@localhost home] # sed '1c Hi' filename #第一行代替为Hi [root@localhost home] # sed '1,2c Hi' filename #第一行到第二行代替为Hi
替换一行中的某部分
格式:sed 's/要替换的字符串/新的字符串/g' (要替换的字符串可以用正则表达式)
[root@localhost home] # sed -n '/pig/p' filename | sed 's/pig/bird/g' #替换pig为bird
[root@localhost home] # sed -n '/pig/p' filename | sed 's/pig//g' #删除pig
[root@localhost home] # sed -i 's/memcpy/crypto_memcpy/g' `grep "{document}" -rl ./` #查找当前和子目录下,包含{document}字符的所有文件;对文件中memcpy替换为crypto_memcpy
[root@localhost home] # sed -e 's/memcpy/crypto_memcpy/g' `grep memcpy -rl ./` #查找当前和子目录下,包含memcpy字符的所有文件;在屏幕上显示memcpy替换为crypto_memcpy
插入
[root@localhost home] # sed -i '$a bye' filename #在文件ab中最后一行直接输入"bye"
常用便捷命令:
1 rm -f `find ./*/ -name "*.o"` #批量删除后缀 .o 文件 2 ll `find ./ -name "tsc_data.c"` #批量查找 并 显示文件属性 3 grep -rn "LS_SSL_START" * #批量查找 包含LS_SSL_START 字符的, 所有文件 4 5 find . -type f -name "*example*" | xargs grep "some_keyword" 6 // 这里,find . -type f -name "*example*"命令会在当前目录及其子目录下查找所有文件名中包含"example"的文件。xargs命令会将find命令的输出(即文件列表)传递给grep命令,然后在这些文件中搜索包含"some_keyword"的行。 7 ==================磁盘与文件系统========================================================= 8 df -h //磁盘占用情况 9 df -h //磁盘占用情况 10 lvdisplay | awk '/LV Name/{n=$3} /Block device/{d=$3; sub(".*:","dm-",d); print d,n;}' //查看dm-0 设备 11 http://blog.sina.com.cn/s/blog_7ab16a1e0101fzsh.html 12 find / -xdev -size +50M -exec ls -l {} \; // 查找大于50M文件 13 journalctl -u httpd.service | grep killed // httpd.service 服务异常
浙公网安备 33010602011771号