linux命令 sed 有的功能有,Linux命令:sed简介

sed是一种在线行编辑器,一次处理一行。工作时,把当前处理的行放到“模式空间”中进行编辑,编辑完成后把内容输送至屏幕。

语法:sed [OPTION]…{script}…[input file]

选项:

-r:支持正则表达式

-n:静默模式,不显示内容

-e: script1 -e script2 -e script3:指定多脚本运行

-f /path/to/script_file:从指定的文件中读取脚本并运行

-i: 直接修改源文件

命令:

d: 删除模式空间中的行;

=:显示行号;

a \text:附加text

i \text:插入text,支持\n实现多行插入;

c \text:用text替换匹配到的行;

p: 打印模式空间中的行;

s/regexp/replacement/:替换由regexp所匹配到的内容为replacement;

g: 全局替换;

w /path/to/somefile:把指定的内容另存至/path/to/somefile路径所指定的文件中;

r /path/from/somefile:在文件的指定位置插入另一个文件的所有内容,完成文件合并

正则:

字符匹配:., [], [^]

次数匹配:*, \?, \+, \{m,n\}, \{n\}

位置锚定:^, $, \

分组及引用:\(\), \1, \2, ...

多选一:a|b|c

定界:

#: 指定行;

$: 最后一行;

/regexp/:任何能够被regexp所匹配到的行;

\%regexp%:同上,只不过换作%为regexp边界符;

/regexp/| :

\%regexp%| :匹配时忽略字符大小写;

startline,endline:

#,/regexp/:从#行开始,到第一次被/regexp/所匹配到的行结束,中间的所有行;

#,#

/regexp1/,/regexp2/:从第一次被/regexp1/匹配到的行开始,到第一次被/regexp2/匹配到的行结束,中间的所有行;

#,+n:从#行开始,一直到向下的n行;

first~step:指定起始行,以及步长;

1~2,2~2

高级命令:

h:用模式空间中的内容覆盖保持空间的内容;

H:把模式空间中的内容追加至保持空间中内容的后面;

g:从保持空间中取到其内容,并将其覆盖模式空间中的内容;

G:从保持空间中取到其内容,并将其追加在模式空间中的内容的后面;

x:把保持空间和模式空间中的进行交换;

n:读取匹配到的行的下一行至模式空间;(会覆盖模式空间中的原有内容);

N:读取匹配到的行的下一行至模式空间,追加在模式空间中原有内容的后面;

d:删除模式空间中的内容;

D:删除多行模式空间中的首行;

注意:命令功能可使用!取反;分号可用于分隔脚本;

练习:

1.删除/root/file文件中所有行的行首的空白字符

[root@localhost ~]# cat file && cat file |wc -l

aaaaaaaaaaaaaaaaa

bbbbbbbbbbbbbbbb

cccccccccccccccc

2. 删除/etc/fstab文件中所有以#开头,后跟至少一个空白字符的行的行首的#和空白字符

[root@localhost ~]# sed 's/^#[[:space:]]\+//' /etc/fstab

#

/etc/fstab

Created by anaconda on Wed Aug 26 23:57:24 2015

#

Accessible filesystems, by reference, are maintained under '/dev/disk'

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1

UUID=ccfe9f33-b5da-48b1-821b-b3bec206147b /boot ext4 defaults 1 2

/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

3. 只查看/etc/fstab文件的第1行到第5行

[root@localhost ~]# sed -n '1,5p' /etc/fstab

#

# /etc/fstab

# Created by anaconda on Wed Aug 26 23:57:24 2015

#

4.删除文件中包含“my”的行到包含“you”的行之间的行

[root@localhost ~]# cat file

this is my test line

how are you

hello

how are you tom

my

aaaaaaaaaaaaa

you

[root@localhost ~]# sed '/my/,/you/d' file

hello

how are you tom

5.查询包含“you”的所有行

[root@localhost ~]# sed -n '/you/p' file

how are you

how are you tom

you

6.在文件中每行后面添加空行

[root@localhost ~]# sed 'G' file

this is my test line

how are you

hello

how are you tom

my

aaaaaaaaaaaaa

you

7. 保证指定的文件每一行后方有且只有一个空白行

[root@localhost ~]# sed '/^$/d;G' file

this is my test line

how are you

hello

how are you tom

my

aaaaaaaaaaaaa

you

8.打印奇数行

[root@localhost ~]# sed -n '1~2p' file

1,this is my test line

3,hello

5,my

7,you

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

while中的break

while中的break意思是结束循环 start 0 while True:print(start)if start 100:break # 如果start 100 就退出循环start 1转载于:https://www.cnblogs.com/zhengkui/p/9052875.html

linux tcp header更改,Linux Netfilter中修改TCP/UDP Payload的方法

来自linux-2.6.36/net/ipv4/netfilter/nf_nat_helper.c注:该代码可以移植到ebtables中使用,但需要注意struct rtable *rt结构在ebtables中是没有的。修改UDP payload的代码:/* Unusual, but possible case. */static int enlarge_skb(struct …

Servlet跳转到JSP页面后的路径问题相关解释

一、现象与概念 1. 问题 在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同一个文件夹下时,则会出现路径混乱问题。 2. 绝对路径概念 相对于con…

linux7 kickstart,Linux运维知识之CENTOS 7 验证KICKSTART文件是否完整方法

本文主要向大家介绍了Linux运维知识之CENTOS 7 验证KICKSTART文件是否完整方法,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。功能简介:CentOS 7 包含 ksvalidator 命令行程序,可使用该程序进行确认Kickstart文…

CI项目设计Redis队列

项目开发过程中需要设计提供可平衡的处理多个用户请求的队列。需求:当用户登录后,查看系统中已经登录的管理员队列,然后查看后台管理员的处理能力,如果已经不能处理新的请求,则把该管理员从处理队列中删除,…

c语言在函数中传递指针,[求助]关于文件指针在函数中传递的问题

[求助]关于文件指针在函数中传递的问题我写的一个程序中文件指针在各函数间传递。请各位整理一下思路。/**//* 。。。(开头部分省略) *//* 部分函数省略 *//* 打开号码文件,号码文件必须与该程序放在同一文件夹。*/void OpenFile(char * argv , FILE ** fin , FILE …

担当大任者的九大特征

一、忍得住孤独人生想要获得成功,必须忍得住孤独,尤其是在创业之初,很多时候为了达成目标,可能别人在休息时,我们还一个人在默默无闻的付出,这种过程是非常孤独的,但如果能挺得过去,…

c语言竖等于意思,C语言竖式问题

#include#includeint main(){char str[30];//键盘输入数组scanf("%s",str);int i,j;char sta[50];//字符串输入输出数组int count0;for(i1000;i<9999;i){for(j10;i<99;i){int proi*j;int pro1i*(j%10);int pro2i*(j/10);sprintf(sta,"%d%d%d%d%d",i,…

6章 Models

传统的MVC结构中&#xff0c;有模型这么一个概念。Django中&#xff0c;Models又是怎么一回事呢? 刚才生成的这些乱七八糟的数据迁移就是Django自带的一些应用 INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessio…

android activity之间传递对象,Android Activity之间的数据传递

一、通过startActivity来进行Activity的传值在Android中&#xff0c;如果我们要通过一个Activity来启动另一个Activity&#xff0c;可以使用 startActivity(Intent intent)方法来传入一个Intent对象&#xff0c;这个Intent对象我们可以精确的指定我们需要跳转的Activity上&…

I/O流

1.I/O流1.1 基本概念 I/O就是Input/Output的简写&#xff0c;也就是输入/输出的含义。 I/O流主要指像流水一样源源不断进行读写的状态/过程。 1.2 基本分类 以数据读写的单位不同分为&#xff1a;字节流 和 字符流。 其中字节流主要指以字节为基本单位进行读写的流&#xff0c;…

android蓝牙传输的是字符吗,Android蓝牙接收到的串行数据乱码

我已经通过以下线索了解我的疑问。但是&#xff0c;目前还不清楚。Android蓝牙接收到的串行数据乱码克里斯&#xff0c;这是一个不错的解决方法&#xff0c;你建议。在你提供的解决方案中&#xff0c;附加\ n的解决方案适合我&#xff0c;因为我纯粹将我的PC(MATLAB)中的浮点值…

请谈谈cookie,locaStorage的区别和特点

cookie和locaStorage有什么区别呢&#xff1f; 存储容量&#xff1a; Cookie存储的数据大小有限制&#xff0c;一般在4KB左右&#xff0c; LocaStorage可以存储更大的数据&#xff0c;一般在5MB甚至更多 存储位置&#xff1a; Cookie数据会随着每次HTTP请求自动发送到服务器端…

[UE4]更新UI的三种方式

一、函数绑定 二、属性绑定 只会列出匹配的数据类型。 三、事件驱动更新 啦啦啦啦啦 结论&#xff1a;函数和属性绑定的原理都是每帧都去调用绑定的函数/属性&#xff0c;效率比较低下&#xff0c;一般不推荐使用。事件驱动更新的效率最好&#xff0c;性能最好。 在正式的产品开…

使用handler倒计时

点击button暂停 public class MainActivity extends AppCompatActivity {BindView(R.id.button)Button button;BindView(R.id.first_textview)TextView textView;Handler mHandler;volatile boolean flagtrue;Object objectnew Object();MThread mThread;Overrideprotected voi…

android 编译主机,Android】源码编译 ---zzz

问题解决 参考1)/bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 权限不够解决&#xff1a;chmod ax prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc2)/bin/bash: build/core/find-jdk-tools-jar.sh: 权限不够/bin/bash: build/too…

C/C++ 面试题记录

1、new 、 delete 、 malloc 、 free 的区别与关系&#xff1f; new / delete 是C的运算符&#xff0c;malloc / free 是C的标准库函数。 new会调用对象的构造函数&#xff0c;delete会调用对象的析构函数。它们都可用于动态申请内存和释放内存。 对于非内部数据类型的对象而言…

android实现3种定位的切换,Android 滑动定位+吸附悬停效果实现

在前两篇文章中&#xff0c;分别介绍了tablayoutscrollview 和 tablayoutrecyclerview 实现的滑动定位的功能&#xff0c;文章链接&#xff1a;Android 实现锚点定位Android tabLayoutrecyclerView实现锚点定位仔细看的话&#xff0c;这种滑动定位的功能&#xff0c;还可以整体…

用JavaScript语言判断一个三位数是否为水仙花数

// 提示用户输入一个三位数// 如果不是三位数或者不是数字&#xff0c;则提示“非法输入”&#xff1b;// 如果输入合法&#xff0c;判断这个三位数是否为水仙花数。// &#xff08;每一位数的三次方之和等于这个数本身&#xff0c;就是水仙花数。例如&#xff1a;153 370 371 …

unity mmd不支持android,MMD模型导入Unity的解决方案

前言学了Unity后&#xff0c;总是感觉缺少资源&#xff0c;包括人物、物品模型、动作数据、贴图、特效&#xff0c;各种插件&#xff0c;还被骗去学了几天各种美术软件。说起模型和动作数据&#xff0c;就又想到MMD&#xff0c;毕竟有那么现成的资源&#xff0c;虽然不能商用&a…