shell常见命令

xiaoxiao2021-03-01  32

sort 演示 uniq 练习 paste 演示: cut 演示 xargs 演示 sed 用法模式空间与保持空间sed高级命令 awk BEGIN与END演示 print

sort

sort:将文件每一行作为单位,对文件进行排序,依次比较ASCII码值。默认升序排列。 -r:逆序排列 -c:判断文件是否有序,若无序,输出错误信息,并返回1 -C:判断文件是否有序,若无序,不输出内容,返回1 -b:忽略文件每一行前面空白部分 -n:按数值进行排序 -t:指定分隔符 -k:指定列数: -u:输出去除重复行

演示

uniq

-u:显示不重复的行 -d:显示重复行 -c:在每一行前加本行在文件中出现的次数

练习

使用sort与uniq求文件的交集,并集,差集

并集:file1与file2合并 交集:file1与file2共同拥有的部分 差集:file1-file2

paste

paste:将多个文件内容合并,按行将不同文件信息合并到一行,链接时,使用空格或tab键分个新行中不同文本 -d:指定域分隔符 -s:将每个文件合并成行不是按行粘贴 -:从标准输入读取一次数据,默认使用空格或tab进行分割,该选项控制输出格式

演示:

cut

cut:将文件中指定行剪至标准输出 -b:以字节为单位进行分割 -c:以字符为单位进行分割 -d:自定义分隔符 -f:指定显示哪一区域

演示

xargs

xargs:给其他命令传输参数的一个过滤器,组合多个命令的工具,将标准输入数据转换成命令行参数,xargs可处理管道或标准输入转换为特定命令的命令参数,也可将单行或多行文本的输入转换为其他格式,如多变单,单变多,默认命令是echo,空格是默认定界符,即同过管道传递给xargs的输入会包含换行和空白,通过处理,将被取代。 -n:指定列数,并多行输出 -d:指定域分隔符 -I:指定替换字符串{},每一个参数命令会被执行一次

演示

sed

sed:流编辑器,不会修改原文件。处理时,将当前处理的行存储在临时缓冲区中,称为“模式空间,接着使用sed处理缓冲区的内容,处理完后,将缓冲区内容送至屏幕,不断重复直至文件结束。sed用来自动编辑一个或多个文件简化对文件的反复操作,编写转换程序等功能 命令格式:sed [options] ‘command’ file(s) sed [options] -f scriptfile file(s)

用法

/pattern/p :打印匹配pattern的行,连同待处理的内容一起输出,使用-n去除 /pattern/d:删除匹配的行,只是将其不显示不是删除原文件内容,若要删除,-i选项 /pattern/s/pattern1/pattern2/:查找符合pattern的行,将该行第一个匹配的pattern1换为pattern2 /pattern/s/pattern1/pattern2/g:查找符合pattern的内容,该行所有匹配pattern1的内容替换为pattern2 \(…\):匹配子串,匹配的第一个字串标记为\1,以此类推

模式空间与保持空间

sed在正常情况下,将处理的行读入模式空间(pattern space),脚本中的“sed-command(sed命令)”就一条接着一条进行处理,直到脚本执行完毕。然后该行被输出,模式(pattern space)被清空;接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕。 一般情况下,数据的处理只使用模式空间. 模式空间:可看做工厂的流水线,数据直接在上面处理 保持空间:可看做仓库,数据的暂存区,正常情况下,如果不显示使用某些高级命令,保持空间不会使用

sed高级命令

g:将保持空间的内容拷贝到模式空间,原模式空间的内容清除 G:将保持空间的内容追加到模式空间 h:与g相反 H:与G相反 d:删除模式中的所有行,并读入下一新行到模式中 D:删除多行中的第一行,不读入下一行 x:交换模式空间与保持空间的内容 N:将下一行添加到模式空间内 n:读取下一行到模式空间内

awk

sed以行为单位进行处理文件,awk行列均可以,缺省行分隔符为换行,列分隔符为空格或tab键,awk处理的文件既可以由标准输入重定向得到,也可以当命令行参数传入,编辑命令可以直接当命令行参数传入,也可以用-f参数指定一个脚本文件。 命令格式:/pattern/{actions} pattern为正则表达式,actions为一系列操作 condition{actions} awk的分隔符: -F指定

BEGIN与END

用作文本处理前的准备工作,之后的收尾工作 格式: BEGIN{}/REG/{} END{}常用来显示变量的初始化 BEGIN{} condition{} END{] 用来显示最终结果

演示

print

print输出符合正则表达式的结果行,$0表示整条记录,$1,$2表示指定域

转载请注明原文地址: https://www.6miu.com/read-4200216.html

最新回复(0)