Linux命令行——sed编辑器及正则表达式
sed编辑器简介 sed编辑器,又称流编辑器,命令码ld命是命令码ld命一个“非交互式”的面向字符流的编辑器。它能够同时处理多个文件的命令码ld命多行内容,既可以直接修改文件内容,命令码ld命也可以不对原文件改动,命令码ld命asp源码公文审批将修改后的命令码ld命数据发送到STDOUT。 sed编辑器的命令码ld命选项包括:-n:只打印模式匹配的行
-e:在命令行模式上进行sed动作编辑,为默认选项
-f:将sed的命令码ld命动作写在一个文件内,用–f filename执行filename内的命令码ld命sed动作
-r:支持扩展表达式
-i:直接修改文件内容
sed编辑器的编辑命令包括:a:附加新行
i:插入新行
c:修改整行文本
d:删除文本行
p:打印行内容
s:替换文本模式
g:全局替换
y:字符转换
q:完成替换后退出
w:向文件写入行
r:从文件插入数据
=:打印行号
l:列出文本内容
{ ...};{ ...}:多命令分组执行
使用sed编辑器查询文本的方法有:以数字形式表示行区间
使用文本模式过滤行,格式:/pattern/command
使用正则表达式
正则表达式基础:特殊字符:.*[]^${ }\+?命令码ld命|()
锚字符:^匹配行首,$匹配行尾,命令码ld命^$匹配空白行
点号字符:.匹配除换行符外的命令码ld命任意单个字符
字符组:使用方括号定义,[]匹配指定范围内的命令码ld命任意单个字符,[^]匹配指定范围外的命令码ld命任意单个字符
区间:匹配指定范围内的字符,使用方括号定义
特殊字符组:[[:alpha:]]匹配字母,antd tree 源码[[:alnum:]]匹配字母数字字符,[[:blank:]]匹配空格或制表符等
星号字符:匹配字符出现0次或多次,用于匹配任意数量的任意字符
扩展正则表达式:{ }指定可重复的正则表达式上限
匹配前面字符0次或1次+:匹配前面字符1次或多次
|逻辑OR方式指定多个模式
sed编辑器进阶:多行命令:N合并文本行,D删除多行组中的行,P打印多行组中的行
分支:b [address]跳转到标签为 [label] 的行,若无label则跳转到脚本末尾
模式替代:使用&符号代表模式匹配,圆括号定义子模式,特殊字符引用子模式位置
sed编辑器保持空间:模式空间用于保存待检查的文本
保持空间用于临时保存部分行,使用h、H、g、G、x命令操作
使用示例:合并文本行:N命令将发现第一个单词的那行和下一行合并,便于查找多行文本
多行删除命令:D删除模式空间中的第一行,结合N命令处理多行数据
多行打印命令:P打印多行模式空间中的gec源码在哪第一行,与单行p命令类似
总结:sed编辑器提供强大的文本处理功能,通过正则表达式、多行命令、分支等特性,可以实现复杂的数据过滤和文本替换操作。保持空间的使用更增加了灵活性,允许在文本处理过程中灵活移动和保存数据行。Linux中使用sed命令替换字符串小结
最近写了几个小脚本用到了sed命令,学了一下,顺便记下
sed替换的基本语法为:
复制代码
代码如下:
sed 's/原字符串/替换字符串/'
单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”/”进行转义,但是单引号”‘”是没有办法用反斜线”/”转义的,这时候只要把命令中的单引号改为双引号就行了,例如:
复制代码
代码如下:
sed "s/原字符串包含'/替换字符串包含'/" //要处理的字符包含单引号
命令中的三根斜线分隔符可以换成别的符号,这在要替换的内容有较多斜线是较为方便,只需要紧跟s定义即可,例如换成问号”?”:
复制代码
代码如下:
sed 's?原字符串?替换字符串?' //自定义分隔符为问号
可以在末尾加g替换每一个匹配的关键字,否则只替换每行的第一个,例如:
复制代码
代码如下:
sed 's/原字符串/替换字符串/' //替换所有匹配关键字
上箭头”^”表示行首,美元”$”符号如果在引号中表示行尾,但是在引号外却表示末行(最后一行),这里犯二了,搜了半天哪个符号表示首行,半天才想起来,首行就是数字”1″啊.那么在行首和行尾添加字符串就是把行尾和行首替换,例如:
复制代码
代码如下:
sed 's/^/添加的头部/g' //在所有行首添加
sed 's/$/添加的尾部/g' //在所有行末添加
sed '2s/原字符串/替换字符串/g' //替换第2行
sed '$s/原字符串/替换字符串/g' //替换最后一行
sed '2,5s/原字符串/替换字符串/g' //替换2到5行
sed '2,$s/原字符串/替换字符串/g' //替换2到最后一行
替换样式可以多个在同一条命令中执行,用分号”;”分隔,例如:
复制代码
代码如下:
sed 's/^/添加的头部/g;s/$/添加的尾部/g' //同时执行两个替换规则
sed处理过的输出是直接输出到屏幕上的,要保存可以将输出重定向,或者使用参数”i”直接在文件中替换:
复制代码
代码如下:
sed -i 's/原字符串/替换字符串/g' filename //替换文件中的所有匹配项
写完晚上点半了,困得不行,要是中间语言不连贯了出错了请见谅,欢迎指出.
linux sed命令常用语法汇总
Linux sed命令是强大的文本处理工具,它提供了多种实用的编辑语法。其中,-e选项用于执行一系列操作,如示例中用法为:`sed -e '3d' -e '2p' -e '1a\\' /etc/profile`,或者简化为`sed -e '3d ; 2p ; 1a\\' /etc/profile`,允许在一条命令中完成多个编辑步骤。
另一个值得注意的settools源码安装选项是-n,它开启了安静模式,仅打印被处理过的行,通过与p操作符配合使用,可以控制输出内容。例如,如果要在文件中只显示数字部分加.cm,可以这样做:
首先,备份原始文件:`cp user.txt user.txt-bak`
接着,使用sed修改文件:`sed -n '/[0-9]/p' user.txt | sed 's/\([0-9]\)/\1.cm/' > user.txt`
统计单词出现次数,可以使用`sed -n 'h; G; s/ /\n/g; /./!d; s/(\n\1*)/\1/p' user.txt`
删除特定字符,如删除a、b、c或d:`sed '/[abc]/d' file.txt`
对以root开头的行及后续三行进行替换:`sed '/^root/ { N;N;s/.*/\1\nreplacement/}' file.txt`
最后,提取etiantian.org格式的域名:`grep -oE '\.([^\.]+)\.org' file.txt`
linuxä¸sedå½ä»¤sedlinuxå½ä»¤
sediå½ä»¤è¯¦è§£ï¼ãLinuxå½ä»¤ãsed-iå½ä»¤è¯¦è§£
ä¸.使ç¨è¯´æ
#sed
é项ä¸åæ°ï¼
-nï¼ä½¿ç¨å®é(silent)模å¼ãå¨ä¸è¬sedçç¨æ³ä¸ï¼æææ¥èªSTDINçæ°æ®ä¸è¬é½ä¼è¢«ååºå°ç»ç«¯ä¸ãä½å¦æå ä¸-nåæ°åï¼ååªæç»è¿sedç¹æ®å¤ççé£ä¸è¡(æè å¨ä½)æä¼è¢«ååºæ¥ã
-eï¼ç´æ¥å¨å½ä»¤å模å¼ä¸è¿è¡sedçå¨ä½ç¼è¾ï¼
-fï¼ç´æ¥å°sedçå¨ä½åå¨ä¸ä¸ªæ件å ï¼-ffilenameåå¯ä»¥è¿è¡filenameå çsedå¨ä½ï¼
-rï¼sedçå¨ä½æ¯æçæ¯å»¶ä¼¸åæ£è§è¡¨ç¤ºæ³çè¯æ³ã(é»è®¤æ¯åºç¡æ£è§è¡¨ç¤ºæ³è¯æ³)
-iï¼ç´æ¥ä¿®æ¹è¯»åçæ件å 容ï¼èä¸æ¯è¾åºå°ç»ç«¯ã
å¨ä½è¯´æï¼]function
n1,n2ï¼ä¸è§å¾ä¼åå¨ï¼ä¸è¬ä»£è¡¨ãéæ©è¿è¡å¨ä½çè¡æ°ãï¼ä¸¾ä¾æ¥è¯´ï¼å¦ææçå¨ä½æ¯éè¦å¨å°è¡ä¹é´è¿è¡çï¼åã,ã
functionï¼
aï¼æ°å¢ï¼açåé¢å¯ä»¥æ¥å串ï¼èè¿äºå串ä¼å¨æ°çä¸è¡åºç°(ç®åçä¸ä¸è¡)
cï¼å代ï¼cçåé¢å¯ä»¥æ¥å串ï¼è¿äºå串å¯ä»¥å代n1,n2ä¹é´çè¡
dï¼å é¤ï¼å 为æ¯å é¤åï¼æ以dåé¢é常ä¸æ¥ä»»ä½å 容ï¼
iï¼æå ¥ï¼içåé¢å¯ä»¥æ¥å串ï¼èè¿äºå串ä¼å¨æ°çä¸è¡åºç°(ç®åçä¸ä¸è¡)
pï¼åå°ï¼äº¦å³å°æ个éæ©çæ°æ®å°åºãé常pä¼ä¸åæ°sed-nä¸èµ·è¿è¡
sï¼å代ï¼å¯ä»¥ç´æ¥è¿è¡å代çå·¥ä½ï¼é常è¿ä¸ªsçå¨ä½å¯ä»¥æé æ£è§è¡¨ç¤ºæ³ï¼ä¾å¦1,s/old/new/g
sed-iå°±æ¯ç´æ¥å¯¹ææ¬æ件è¿è¡æä½ç
sed-iâs/åå符串/æ°å符串/â/home/1.txt
sed-iâs/åå符串/æ°å符串/gâ/home/1.txt
è¿ä¸¤æ¡å½ä»¤çåºå«å°±æ¯ï¼ç示ä¾
è¿æ¯1.txtçå 容
#cat1.txt
d
ddd
#ff
1
2
3
4
1
2
3
4
åçæ§è¡è¿ä¸¤æ¡å½ä»¤çåºå«å§
sed-is/d///home/1.txt
æ§è¡ç»æ
dd
#ff
1
2
3
4
5
1
2
3
4
5
sed-is/d//g/home/1.txt
æ§è¡ç»æ
#ff
1
2
3
4
5
1
2
3
4
5
äº.示ä¾ï¼
å»æâè¡é¦â带â@âçé¦åæ¯@
sed-iâs/^@//âfile
ç¹å®å符串çè¡åæå ¥æ°è¡
sed-iâ/ç¹å®å符串/iæ°è¡å符串âfile
ç¹å®å符串çè¡åæå ¥æ°è¡
sed-iâ/ç¹å®å符串/aæ°è¡å符串âfile
ç¹å®å符串çå é¤
sed-iâ/å符串/dâfile
Linuxæ¹éæ¿æ¢æç§ç±»åæ件ä¸çå符串-sedågrepå½ä»¤ä½¿ç¨ï¼
æè·¯ï¼å æ¾å°æ件ï¼åæ¿æ¢
find/yourfolder/subdir-exec{ sed-i"s/oldstring/newstring/g"`grepoldstring-rlyourdir`};
linuxsedå½ä»¤å¦ä½åæ¶æ¿æ¢ä¸¤ä¸ªä¸æ ·çå符串ï¼
sed"s/^somevariable=.{ 0,}/somevariable=$1/g"/file_path/file.suffix
sed"s/^somevariable=.*/somevariable=$1/g"/file_path/file.suffixsedéé¢è°ç¨åéè¦ç¨åå¼å·
linux sed命令
Linux的sed命令是一种强大的文本处理工具,它在文本流中进行模式匹配和替换操作。mac 查看源码在上述例子中,sed被用来查找字符串"A"和"B"之间的内容,并进行替换。命令行中的'cat testA is B'被sed处理,通过正则表达式\(A\)(.*)(B)\)找到"A"和"B"之间的部分,然后用'\3\2\1'进行逆序,结果输出为"testB is A"。 具体来说,sed的工作原理是首先读取输入的文本(在这个例子中是testA的内容),然后匹配给定的模式\(A\)(.*)(B),这里的"\(.*\)"表示匹配任何字符直到遇到"B"。找到匹配后,sed会将这部分内容提取出来(\3),然后将剩余的"A"和"B"部分插入到提取的内容前后(\2\1)。最后,处理后的结果写入到testB文件中,内容变为"A"和"B"之间的内容逆序。 总结来说,Linux的sed命令通过模式匹配和字符串操作,实现了文本内容的高效替换和处理,这对于处理大量文本数据或编程脚本中进行复杂的文本操作非常有用。linux sed命令
sed命令是linux下的一个文档编辑命令,通常是用于处理编辑文本文件,sed命令主要有三大功能,具体介绍如下:
1、自动编辑一个或多个文件;
2、简化对文件的反复操作;
3、编写转换程序。
说明:sed命令可以依照脚本的指令来处理、编辑文本文件。
sed命令的具体语法格式为sed [参数]。
参数:
-e或--expression=script 以选项中指定的script来处理输入的文本文件
-fscript文件或--file=script文件 以选项中指定的script文件来处理输入的文本文件
-h或--help 显示帮助
-n或--quiet或--silent 仅显示script处理后的结果
-V或--version 显示版本信息
软件测试|Linux三剑客之sed命令详解
Linux三剑客之sed命令详解 Linux下的流式文本编辑器sed,主要用于文本处理和转换,尤其擅长逐行操作,支持替换、删除、插入等。它通过命令行简单实现大量文本数据的编辑,下面将深入解析其基本用法和常见操作。 基本语法:sed命令的基本格式为 sed [选项] '命令' 输入文件,其中,命令包括查找、替换和动作操作。 常用参数:常见的sed选项有替换模式、查找模式等,如`-i`选项用于直接修改原文件,`-n`选项用于只显示匹配的行。 实例演示:替换:在`fruits.txt`中,`sed 's/APPLE/Apple/g' input_file`替换所有APPLE为Apple。
全匹配替换:`sed '/orange/s/orange/peach/g' fruits.txt`替换所有orange为peach。
行定位操作:`sed '4s/BANANA/banana/' fruits.txt`将第4行的BANANA改为banana。
删除行:`sed '/banana/d' fruits.txt`删除包含banana的行。
插入行:`sed '5i mango' fruits.txt`在第5行前插入'mango'。
正则表达式的支持让sed处理更复杂模式,如`sed 's/orange/mango/ig' fruits.txt`将所有orange替换为mango,`sed '/banana/d' fruits.txt`则删除所有匹配banana的行。 总结,sed以其强大的功能,广泛应用于文本编辑,无论是替换、删除还是复杂的模式匹配,都能得心应手。掌握sed是提高文本处理效率的关键。若想深入了解,可参考相关课程和资源,如测试前景类、测试入门类和职场提升类的文章,来进一步提升自己的技能。linux sed命令详解
sed命令是利用脚本来处理文本文件,编辑文本文件,主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。
语法:sed [-hnV][-e<script>][-f<script文件>][文本文件]
参考例子:
一条sed命令,删除/etc/passwd第三行到末尾的数据,并把bash替换为blueshell
nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'
1 root:x:0:0:root:/root:/bin/blueshell
2 daemon:x:1:1:daemon:/usr/in:/bin/sh
-e表示多点编辑,一个编辑命令删除/etc/passwd第三行到末尾的数据,第二条命令搜索bash替换为blueshell。
参数:
-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或--help 显示帮助。
-n或--quiet或--silent 仅显示script处理后的结果。
-V或--version 显示版本信息。
2024-11-23 11:29
2024-11-23 11:28
2024-11-23 11:05
2024-11-23 10:12
2024-11-23 09:45