专栏首页mwangblogLinux中的管道命令(一)

Linux中的管道命令(一)

Linux中的管道命令(一)

本文目录

  • 1 cat
  • 2 split
  • 3 tac
  • 4 rev
  • 5 head, tail
  • 6 cut

cat

cat程序将数据不加改变的复制到标准输出,数据可以来自于标注输入,也可以来自于文件。

下面的程序将输出hello.txt文件的内容:

$ cat hello.txt

cat命令常被用作组合多个文件,下面的命令将hello.txtsource.list.bk文件的内容组合保存到bk.txt中:

$ cat hello.txt source.list.bk > bk.txt

split

使用cat可以组合文件,使用split可以分割文件。

split默认将文件每1000行存为一个新文件,如果最后一次分割后剩余的不足1000行,则将剩余的行作为一个文件,也可以使用-l命令选项指定每个新文件的行数:

$ split -l 4 bk.txt

上面的命令将bk.txt文件每4行分割为一个新文件,bk.txt文件共15行,因此生成4个文件(前三个每个都是4行,最后一个是3行),其名字依次为xaaxabxacxad

split生成的新文件的默认名字为xaaxabxac……,使用-d选项指定使用数字作为新文件名后缀,默认是两位数字,还可以在文件名后面指定新文件的文件名前缀:

$ split -d -l 4 bk.txt source

生成的四个文件的文件名为source00source01source02source03

使用-a选项指定数字或者字母后缀的位数,下面的命令指定使用数字后缀且数字位数为3位:

$ split -d -a 3 -l 4 bk.txt source_

生成的四个文件的文件名依次是:source_000source_001source_002source_003

tac

tac逆序输出每一行:

$ cat output
li
qian
sun
wang
wu
zhao
zheng
zhou
$ tac output
zhou
zheng
zhao
wu
wang
sun
qian
li

rev

rev对每一行的内容进行逆序输出:

$ cat output
li
qian
sun
wang
wu
zhao
zheng
zhou
$ cat output | tac
zhou
zheng
zhao
wu
wang
sun
qian
li
$ cat output | tac | rev
uohz
gnehz
oahz
uw
gnaw
nus
naiq
il

head, tail

head默认显示文件的前10行内容,tail默认显示文件的最后10行内容。

它们都可以使用-n指定显示的行数:

$ head -n 2 bk.txt
Hello, vim!ello
Hello, vim!Hello
$ tail -n 5 bk.txt
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

cut

cat命令在每行信息中进行切割。

下面是$PATH变量的内容:

$ echo $PATH
/home/tom/bin:/home/tom/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

在该变量中,每一个目录项由:进行分割,第1个目录项是/home/tom/bin,第2个目录项是/home/tom/.local/bin……

cut命令使用-d '字符'选项即可使用指定的字符进行切分,使用-f选项即可指定分割后要保留的部分:

$ echo $PATH | cut -d ':' -f 1,3
/home/tom/bin:/usr/local/sbin

上面的语句中,cut使用:$PATH变量进行了切分,并且保留了其第1和第3项。

对于下面这样很“整齐”的文件:

$ cat source.list.bk
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

还可以对cut使用-c命令选项指定截取的字符,比如cut -c 2-4表示截取每行的第2-4个字符。下面的命令截取每行的39至最后一个字符:

$ cat source.list.bk | cut -c 39-
xenial main restricted universe multiverse
xenial-security main restricted universe multiverse
xenial-updates main restricted universe multiverse
xenial-proposed main restricted universe multiverse
xenial-backports main restricted universe multiverse

本文分享自微信公众号 - mwangblog(mwangblog),作者:WM

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python类(二)

    mwangblog
  • Shell中的管道

    mwangblog
  • 遗传算法解决旅行商问题(TSP)一:初始化和适应值

    旅行商问题(Travelling salesman problem, TSP)是这样一个问题:给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起...

    mwangblog
  • 故障分析:一则library cache lock问题处理

    编辑手记:library cache lock 大家都并不陌生,在MOS上对该阻塞的一般成因描述为:一般可以理解的是alter table或者alter pac...

    数据和云
  • 近期微信小程序领域颇为热闹 难道在酿造新的商业机会?

    与穷游网达成战略合作,拓展旅游场景、马化腾亲自推动“微信乘车码”小程序落地安徽合肥、「递名片」小程序获得 Pre-A 轮融资,紧接着“有车以后”宣布完成1亿元融...

    速成应用小程序开发平台
  • 为什么说Transformer就是图神经网络?

    有些工程师朋友经常问我这样一个问题:“图深度学习听起来很棒,但是现在是否有非常成功的商业案例?是否已经在实际应用中部署?”

    AI科技大本营
  • 【晓头条】微信「赞赏功能」曲线回归 / 全球首个微信法庭开庭 / 公众号注册流程大幅简化

    从本期开始,晓头条又要「加料」了——我们将会在晓头条中,增加大家关心的大公司动态,带你了解更广阔的新商业世界。

    知晓君
  • 【晓头条】微信扫码可骑走多种单车 / 大学生花 10 万买公众号被收回 / 微信发布国庆大数据

    一眨眼,史上最长的国庆长假结束了!如果还无心工作,不如用这个小程序吸吸猫狗、提提神吧。

    知晓君
  • 用POI实现双层标题excel打印

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    逝兮诚
  • 小程序开发_小程序定制_小程序定制开发_小程序开发公司

    在互联网时代,所有行业的竞争无论是时间维度还是空间维度都是不断扩大的,餐饮业的运营肯定也是绕不开的。而由于微信小程序的出现,更是给企业、商家开放了另一个空间。

    用户3711474

扫码关注云+社区

领取腾讯云代金券