删除文本第四行
1 | sed '4d' input.txt > output.txt |
实际上没有修改input.txt
,而是修改文件流,然后生成到文件output.txt
。前后两个文件名称不能相同,否则不能保存
使用sed处理当前目录(包括子目录)的所有cpp文件,将其中的aaa
替换为bbb
1 | sed -i "s/aaa/bbb/g" `grep aaa -rl . --include="*.cpp" ` |
grep:
- r 表示查找所有子目录
- l 表示仅列出符合条件的文件名,用来传给sed命令做操作
--include="*.cpp"
表示仅查找cpp文件
整个grep命令用`号括起来,表示结果是一系列文件名
sed -i
后面是要处理的文件,s/aaa/bbb/g
跟vim下的替换命令一样,表示把aaa全替换为bbb,加g表示一行有多个aaa时,要全部替换,
删除空白行: sed ‘/^$/d’ -i delete.txt
对于当前目录(包括子目录)的所有txt文件,删除含有以ros
开头字符串的所有行
1 | sed -i '/ros/d' `grep -rl "^ros" . --include="*.txt" ` |
删除前5个字符
1 | sed 's/.\{5\}//' test.log > a.log |