Linux笔记50–Shell编程5-字符截取命令4-sed命令
student.txt:
ID Name PHP LINUX MySQL Average
1 Liming 82 95 86 87.66
2 Sc 74 96 87 85.65
3 Gao 99 83 93 91.66
-
sed命令
sed是一种几乎包括在所有UNIX平台(包括Linux)的轻量级流编辑器。sed主要是用来将数据进行选取,替换,删除,新增的命令。不仅可以编辑文件,还可以直接编辑命令结果
-
命令格式
sed [选项] ‘[动作]’ 文件名
- 选项
选项 含义 -n 一般sed命令会把所有数据都输出到屏幕,如果加入此选项,则只会把经过sed命令处理的行输出到屏幕 -e 允许对输入数据应用多条sed命令编辑 -i 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出(不光修改输出数据,原数据也会进行更改) -
动作
动作 含义 a : 追加,在当前行后添加一行或多行。添加多行时,出最后一行外,每行行末尾需要用“\”代表数据未完结 c : 行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用“\”代表数据未完结 i : 插入,在当前行前插入一行或多行。插入多行时,除最后一行外,每行末尾需用“\”代表数据未完结 d: 删除,删除指定的行 p: 打印,输出指定的行 s: 字串替换,用一个字符串替换另外一个字符串。格式:“行范围s/旧字串/新字串/g”
-
行替换例子
-
sed -n ‘2p’ student.txt #查看第二行
-
df -h | sed -n ‘2p’ #查看命令结果第二行,可以跟在管道符之后
-
sed ‘2,4d’ student.txt #删除第二行到第四行的数据,但不修改文件本身
-
sed '2a hello \
world’ student.txt #在第二行后追加两行数据
-
sed ‘2c No such person’ student.txt #替换第二行数据
-
-
字符串替换例子
sed ‘s/旧字符串/新字符串/g’ 文件名
- sed ‘3s/74/99/g’ student.txt #在第三行中,把74改成99
- sed -e ‘s/Liming//g;s/Gao//g’ student.txt #把文件中所有的"Liming"和"Gao"字符串替换为空