sed文本操作

背景

日常工作会对文本按行进行一些操作,之前通过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参数,本文主要使用dp

  • 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

猜你喜欢

转载自blog.csdn.net/qq_41994006/article/details/131399340