(九)字符处理命令

1:cut [选项] 文件名

选项:

-f 列号:       提取第几列

-d 分隔符:     按照指定分隔符分割列

-c 字符范围:   不依赖分隔符来区分列,而是通过字符范围(行首为 0)来进行字段提取。“n-”表示从第 n 个字符到行尾;“n-m”从第 n 个字符到第 m个字符;“-m”表示从第 1 个字符到第 m 个字符。cut 命令的默认分隔符是制表符,也就是“tab”键。

 

3:sed

sed 主要是用来将数据进行选取、替换、删除、新增的命令.

直接用命令对文件进行修改并不是vi进行编辑。

    -n:  一般 sed 命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过 sed 命令处理的行输出到屏幕。

-e:  允许对输入数据应用多条 sed 命令编辑。

-f 脚本文件名: 从 sed 脚本中读入 sed 操作。和 awk 命令的-f 非常类似。

-r:  在 sed 中支持扩展正则表达式。

-i:  用 sed 的修改结果直接修改读取数据的文件,而不是由屏幕输出动作:

a \:  追加,在当前行后添加一行或多行。添加多行时,除最后 一行外,每行末尾需要用“\”代表数据未完结。

c \:  行替换,用 c 后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用“\”代表数据未完结。

i \:  插入,在当期行前插入一行或多行。插入多行时,除最后 一行外,每行末尾需要用“\”代表数据未完结。

d: 删除,删除指定的

p: 打印,输出指定的行。

s: 字串替换,用一个字符串替换另外一个字符串。格式为“行范围 s/旧字串/新字串/g”(和 vim 中的替换格式类似)

sed 所做的修改并不会直接改变文件的内容(如果是用管道符接收的命令的输出,这种情况连文件都没有),而是把修改结果只显示到屏幕上,除非使用“-i”选项才会直接修改文件。

 

例子:

(1) 行操作

sed '2p' student.txt  屏幕显示2行数据

(2)只显示-n 只显示第二行

sed -n '2p' student.txt

(3)删除2,4行数据

sed '2,4d' student.txt

(4)在第二行后面添加指定的字符串

sed '2a  ddddddd' student.txt

(1) 在第二行前面添加制定的字符串

sed "2i heeeeeee"  student.txt

(2) 行首替换为#

sed '4s/^/#/g' student.txt

 

3:字符处理命令

(1) 排序 sort命令

-f:  忽略大小写

-b:  忽略每行前面的空白部分

-n:  以数值型进行排序,默认使用字符串型排序  //数值排序

-r:  反向排序

-u:  删除重复行。就是 uniq 命令

-t:  指定分隔符,默认是分隔符是制表符

-k n[,m]: 按照指定的字段范围排序。从第 n 字段开始,m 字段结束(默认到行尾)

sort -n  -r student.txt  //按照字符数值降序排列

sort -n -t ":" -k 3,3 /etc/passwd

当然“-k”选项可以直接使用“-k 3”,代表从第三字段到行尾都排序(第一个字符先排序,如果一致,第二个字符再排序,知道行尾)。

(2) uniq去除重复行

 

(3) 统计命令 wc

   wc –l 统计行数

猜你喜欢

转载自www.cnblogs.com/love-life-insist/p/11668813.html