重定向和管道是什么?

  • 重定向指定特定的输入输出
  • 管道则将上一个命令的结果重定向到下一个命令

标准输入输出重定向

默认的标准输入输出为屏幕,对其重定向可指定输入输出的位置

输入输出重定向意义
stdin< / <<< 重定向到文件中去读取,<< 表示结束输入的字符
stdout> / >>或1>/1>>覆盖/追加重定向到指定文件
stderr2> / 2>>覆盖/追加重定向到指定文件

如下,将输出重定向到temp,若要同时重定向stdout和stderr,则要使用 > temp 2>&1或 &> temp
在这里插入图片描述
下面表示利用 cat 将输入文字输出到catfile 中, 当输入eof 时就结束
在这里插入图片描述

管道及相关命令

管道可将命令通过 | 重定向到下一个命令,不过其只能重定向stdout即成功执行的命令

cut

命令 cut 可按指定字符分割数据,-d 指定分割字符,-f 取出第几段,-c 以字符为单位取出固定范围内的字符,如下以 : 分割取出第2和第四个
在这里插入图片描述
若正常输出 export 显示如下
在这里插入图片描述
参数 -c 可处理整齐的格式化输出,如下从第12个字符开始输出
在这里插入图片描述

head

命令 head 显示文件的前几行,-n 指定显示的行数
在这里插入图片描述

grep

命令 grep 过滤信息,列出所查找关键字所在的位置,-a将binary文件以text文件方式搜索,-c计算找到的字符串个数,-i忽略大小写,-n输出行号,-v反向选择,–color=auto 将找到的关键字加上颜色,-r递归查找并显示文件夹,-l只显示文件名而不显示具体内容
在这里插入图片描述
默认的grep已自动加上–color=auto,如上查找test1及反向查找

sort

命令 sort 默认通过字符串排序,-f忽略大小写,-b忽略前面的空白字符,-M以月份排序,-n以数字排序,-r反向排序,-u仅显示一行,-t 指定分割符号(默认为tab),-k指定排序的列所在的区间
在这里插入图片描述
如上按照字符串排序,如下以 : 分割按照第2列的数字排序
在这里插入图片描述

uniq

命令 uniq 在去除重复行显示一行,-i忽略大小写,-c计数,如下根据第一列排序去除重复的行并统计出现次数
在这里插入图片描述

wc

命令 wc 可统计文件行数、字数、字符数,-l仅显示行数,-w仅显示字数,-m仅显示字符数
在这里插入图片描述

tee

命令 tee 会将管道流同时送到文件与stdout,-a 以累加的方式加入到文件
在这里插入图片描述

tr

命令 tr 用来删除或替换一段信息中的文字,-d 指定删除字符串,-s 替代重复字符串,如下将小写转为大写
在这里插入图片描述

col

命令 col 加上参数 -x 将可将tab转换成等长的空白键,如下^I代表tab
在这里插入图片描述

join

命令 join 将两个文件中相同那一行合并在一起(默认对比以空白为分割的第一个字符),-t指定分割符和拼接符,-i忽略大小写,-1 n指定用第一个文件的第n个字符对比,-2 n 指定用第二个文件的第n个字符对比
在这里插入图片描述
如上将第一个字符相同的行合并,如下将1.txt的第二个字符和2.txt的第一个字符对比合并,将相同字符放到第一位
在这里插入图片描述

patse

命令 patse 无需对比直接将两个文件对应的行合并在一起,默认用tab拼接,-d 指定拼接符,- 表示文件来自stdin(即将要输出的文件合并)
在这里插入图片描述
如上直接拼接1.txt和2.txt,如下将1.txt的输出拼接到2.txt
在这里插入图片描述

expand

命令 expand 将tab转为空白键,-t 指定转换的空白个数,如下将tab转为2个空格
在这里插入图片描述

split

命令 split 可用于分割文件,-b 指定欲分割的大小(可加单位),-l 以行数分割
在这里插入图片描述
如上利用dd创建一个650k的文件,再以每个300k进行分割,如下利用重定向将分割文件合并回去
在这里插入图片描述

xargs

命令 xargs 将前面命令的结果作为参数传递给后面,-0 将前面结果的特殊字符还原成一般字符,-e 指定结束字符串,-p 每次执行后面的指令时先询问,-n 指定要使用几个参数
在这里插入图片描述
如上,将find找到的txt文件传递给命令ls -l 作为参数

符号 -

符号 - 可将前面命令的参数同时作为后面命令的参数,如下将mysapces打包然后解压到/tmp
在这里插入图片描述

sed

命令 sed -option [num1,num2]action 可实现对文件替换、删除、新增等操作

  • option:-n表示只有处理过的那一行才会显示,-e 执行sed的action(若只有一个action则可省略),-f 将action写到文件,-i直接修改文件内容
  • action:a在下一行插入,c指定替代字符串,d删除,i在上一行插入,p打印

如下删除第3到最后一行(省略-e)
在这里插入图片描述
如下在第2行后插入
在这里插入图片描述
如果要增加多行使用 \ 换行书写
在这里插入图片描述
如下替代2-3行
在这里插入图片描述
如下只显示2-3行
在这里插入图片描述
如下将ab替换成大写
在这里插入图片描述
如下利用正则提取cd
在这里插入图片描述
如下直接修改原文件在末尾添加一行
在这里插入图片描述

awk

命令 awk ‘condition{action}’ 可按分割符对每一行分割并进行处理,此外还有一些内置变量

变量名意义
NF每行的分割列数
NR目前第几行
FS设置分隔符,默认为空白键

如下仅输出第二列($0表示一整行)
在这里插入图片描述
如下输出第一列及变量NR和NF
在这里插入图片描述
如下加上条件,即从第二行开始输出
在这里插入图片描述
如下将num1和num2加起来并格式化输出
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐