本文共 1236 字,大约阅读时间需要 4 分钟。
#SED命令详解
SED是一个强大的文本处理工具,支持通过模式进行文本的插入、删除、替换等操作。它能够以行为单位处理数据,适合对文本进行批量式处理。SEDr自身是一个管道命令,可以与其他命令通过管道进行数据传输。
SEDr的命令格式通常是以下形式:sed [选项] [命令] [文件]
commonly:
-n
:使用安静模式(默认情况下,所有来自STDIN的数据都会被显示,但加上-n参数后,只有经过特殊处理的行(或动作)才会被显示。-e
:直接在命令中进行sed的动作编辑。-f
:将sed的动作写在文件中执行。-r
:支持扩展正则表达式语法。-i
:直接修改读取的文件内容,而不是从终端输出。a
:在当前行之后插入一行内容,后面可以接字符串,插入的新行会在当前行的下方。i
:在当前行之前插入一行内容,插入行会在当前行的上方。g
:可以用于追加多行内容,通过;
分隔。c
:替换当前行,后面可以接字符串,替换后的行会是新字符串。s
:替换字符串,格式为sed 's/旧字符串/新字符串/g'
,默认只替换第一个匹配项,/g
可以替换所有匹配项。sed '1,20s/enchantment/entrapment/g'
,可以将文件中第一到第二十行内的所有"enchantment"替换为"entrapment"。d
:删除当前行。D
:删除模式空间中的第一行。sed '$d' ab
可以删除文件中最后一行。-n
可以用于控制输出,比如sed -n '1p' ab
可以显示第一行内容。SEDr可以进行大量文件处理操作,如删除空行、插入空行、格式转换等。
例如:将文件中所有"ruby"替换为"bird":sed -n '/ruby/p' ab | sed 's/ruby/bird/g'
sed '=' test.txt | sed 'N;s/s*ns*/t/'
sed '=' test.txt | sed 'N; s/ *([0-9]{3})s*ns*/1t/'
sed 's/^[[:blank:]]*|[[:blank:]]*$//' test.txt
sed -e ':a' -e 's/^.{1,78}$/ &/;ta' test.txt
在文件的每一行后添加一行空白行:sed 'G' test.txt
删除偶数行:sed 'n;d' test.txt
在匹配正则表达式的行前后添加空行:
sed '/regex/{x;p;x;G;}' test.txt
sed 'n;n;n;n;G' test.txt
通过以上命令,SED可以完成文件的多种处理任务,从简单的行增删改查到复杂的文本转换和格式化操作,都能轻松应对。
转载地址:http://igwfk.baihongyu.com/