背景
日常工作会对文本按行进行一些操作,之前通过python
写脚本进行,但是该方法导致写比较多脚本,处理起来也不方便。
本文主要介绍sed
命令可对文本进行简单处理。
sed
命令完整介绍见https://www.runoob.com/linux/linux-comm-sed.html
语法:
sed [1][2][文本文件]
位置1参数,本文主要使用-n
及-i
- -n或–quiet或–silent 仅显示script处理后的结果。
- -i直接修改读取的文件内容,而不是输出到终端。
- -e<script>以选项中指定的script来处理输入的文本文件。
- -f<script文件>或–file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
- -h或–help 显示帮助。
- -V或–version 显示版本信息。
位置2参数,本文主要使用d
及p
- a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
- d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
- i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
- p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
- s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!
选取txt中某几行保存至新txt中
cat a.txt
1
2
3
4
5
6
7
8
9
10
# 选取a.txt中2-6行至b.txt中
sed -n '2,6p' a.txt > b.txt
cat a.txt
1
2
3
4
5
6
7
8
9
10
cat b.txt
2
3
4
5
6
删除txt中某几行将剩余内容保存至新txt中
删除参数-n
,p
改为d
# 删除a.txt中2-6行并将剩余内容保存至b.txt中
sed '2,6d' a.txt > b.txt
cat a.txt
1
2
3
4
5
6
7
8
9
10
cat b.txt
1
7
8
9
10
删除txt中某几行并更新txt
增加参数-i
cat a.txt
1
2
3
4
5
6
7
8
9
10
# 删除a.txt中2-6行
sed -i '2,6d' a.txt
cat a.txt
1
7
8
9
10
参考
https://www.runoob.com/linux/linux-comm-sed.html