sed管道命令工具:分析standard input,对比数据、替换c、删除d、新增a、插入i、选择
语法:
sed [-nefri] [动作]
-n:使用安静模式,在一般情况所有的 STDIN 都会输出到屏幕上,加入-n 后只打印
被 sed 特殊处理的行
-e:多重编辑,且命令顺序会影响结果
-f:直接将sed的动作写在一个文件中,然后-f filename则可执行filename内的sed动作
-r:Sed 使用扩展正则,默认是基础正则表达式语法
-i:直接修改文档读取的内容,不在屏幕上输出
动作说明:[n1[,n2]]function
n1,n2:不见得会存在,一般代表选择进行动作的行数。如在10-20行内,则10,20[动作]
function有下面参数:
a 在当前行后添加一行或多行
c 用新文本修改(替换)当前行中的文本
d 删除行
i 在当前行之前插入文本
p 打印行
s 用一个字符串替换另一个,例如:1,20s/old/new/g(在1-20行内用new替换old单词)
举例:
删除
nl /etc/passwd | sed '2,5d'
新增
nl /etc/passwd | sed '2a drink tea'
行替换
nl /etc/passwd | sed '2,5c No 2-5 number'
显示
nl /etc/passwd | sed -n '5,7p'
替换字符
nl /etc/passwd | sed 's/要被替换的字符串/新字符/g'
好用的数据处理工具awk
相比于sed常常作用于一整行的处理,awk则比较顷向于将一行分成一个“字段”来处理。
awk语法:
awk ‘条件类型1{动作1}条件类型2{动作2}...’ filename
awk可以处理后续接的文件,也可以读取来自前个命令的standardoutput。但awk主要是处理每一行的字段内的数据,而默认的字段的分隔符为空格键和\t键。
要让awk知道这个数据有几行几例,需要awk内置变量的辅助:
NF
每一行($0)拥有的字段总数 ($0代表一整行数据,$1代表每一行的第一个字段,$n代表每行的第n个字段)
NR
目前awk所处理的是第几行数据
FS
目前的分隔符,默认是空格键
举例1:
获取/etc/passwd中前三列数据且第三列小于10以下的数据
cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t" $3}'
改进:
cat /etc/passwd | 'begin awk '{FS=":"} $3 < 10 {print $1 "\t" $3}'
举例2:
pay.txt内容如下:
Name 1st 2nd 3th
VBird 23000 24000 25000
DMTsai 21000 20000 23000
liang 43000 42000 41000
输出要求:第一行只是说明,所以第一行不要进行加总(NR=1时处理);
第二行以后就会有加总的情况出现(NR>=2以后要处理)
cat pay.txt | awk 'NR=1{print "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,$5,"Total"}
NR>=2{total=$2+$3+$4; print "%10s %10d %10d %10d %10d",$1,$2,$3,$4,total}'
针对第个举例进行说明:
i、所有awk的动作,即在{}内的动作,如果有需要多个命令辅助时,可利用分号“;”间隔,或者直接以[enter]按键来隔开每个命令
ii、逻辑运算当中,如果是“等于”的情况,则务必使用两个等号“==”
iii、格式化输出时,在printf的格式设置当中,务必加上\n,才能进行分行!
iv、与bash、shell的变量不同,在awk当中,变量可以直接使用,不需加上$符号
sed管道命令工具:分析standard input,对比数据、替换c、删除d、新增a、插入i、选择语法:sed [-nefri] [动作]-n:使用安静模式,在一般情况所有的 STDIN 都会输出到屏幕上,加入-n 后只打印被 sed 特殊处理的行-e:多重编辑,且命令顺序会影响结果-f:直接将sed的动作写在一个文件中,然后-f filename则可执行filename内的sed...
Linux
提供
管道
符 “|”将两个
命令
隔开,
管道
符左边
命令
的输出就会作为
管道
符右边
命令
的输入
# 示例:
echo "hello world"|grep 'hello'
正则,什么是正则?
正则表达式就是记录文本规则的代码
常用的元字符
Linux
—shell正则表达式—
sed
一.什么是
sed
?
sed
(Stream EDitor)是一个强大而简单的文本解析转换
工具
,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。
sed
也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于 Shell 脚本中,用以完成各种自动化处理任务。
sed
的工作...
1、
sed
工具
概述
sed
(Stream EDitor)是一个强大而简单的文本解析转换
工具
,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。
sed
也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于Shell脚本中,用以完成各种自动化处理任务。
sed
依赖于正则表达式
2、
sed
的工作流程
主要包括读取、执行和显示三个过程。
读取:
sed
从输入流(文件、
管道
、标准输入)中读取一行内容
sed
是一种流编辑器,它可以对文本进行编辑和转换。它可以从标准输入或文件中读取文本,并将结果输出到标准输出或文件中。
sed
命令
可以用于替换、删除、插入和打印文本。以下是一些常用的
sed
命令
:
1. 替换
命令
:s
s
命令
用于替换文本中的字符串。语法如下:
sed
's/old/new/g' filename
其中,old表示要替换的字符串,new表示要替换成的字符串,g表示全局替换。
2. 删除
命令
:d
d
命令
用于删除文本中的行。语法如下:
sed
'Nd' filename
其中,N表示要删除的行号。
3. 插入
命令
:i
i
命令
用于在文本中插入新的行。语法如下:
sed
'Ni\text' filename
其中,N表示要插入的行号,text表示要插入的文本。
4. 打印
命令
:p
p
命令
用于打印文本中的行。语法如下:
sed
'Np' filename
其中,N表示要打印的行号。
以上是
sed
命令
的一些基本用法,可以帮助入门。更多高级用法可以参考
sed
命令
的官方文档。