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)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习与计算机视觉

Python 新建文件夹与复制文件夹内所有内容

在指定路径下新建一个文件夹: import os def newfile(path): path=path.strip() path=path....

2126
来自专栏Python小屋

Python多线程编程中daemon属性的作用

在脚本运行过程中有一个主线程,若在主线程中创建了子线程,当主线程结束时根据子线程daemon属性值的不同可能会发生下面的两种情况之一: 如果某个子线程的daem...

3385
来自专栏向治洪

volatile和synchronized的区别和联系

volatile 它所修饰的变量不保留拷贝,直接访问主内存中的。    在Java内存模型中,有main memory,每个线程也有自己的memory (例如寄...

2078
来自专栏企鹅号快讯

Python模块

Python模块 可以将代码量较大的程序分割成多个有组织的、彼此独立但又能相互交互的代码片段,这些自我包含的有组织的代码段就是模块 模块在物理形式上表现为以.p...

2247
来自专栏Redis

Redis数据类型之hashes类型

2、hsetnx 设置hash field为指定值,如果key不存在,则先创建。如果field已经存在,返回0,nx是not exist的意思。

1130
来自专栏闵开慧

mapreduce主程序如何传递变量到map或者reduce函数中使用

    一般我们写的mapreduce主程序放在客户端机器上,执行任务时是在集群机器上,所以要将变量从主程序传递到我们自己写的map或者reduce函数中就不能...

4115
来自专栏编程

Ansible 2 Api 源码分析及实现

Ansible 2 API ansible 2 API发生了很大的变化。 通过对ansible 2.4.2 的源代码(Python 环境为2.7.5)进行分析来...

54110
来自专栏云霄雨霁

了解Jalangi2

1200
来自专栏Hongten

php开发_多关键字,高亮显示

================================================================

1051
来自专栏CaiRui

Python之简单的用户登录和注册

#!/bin/bash/env python # -*- coding:utf-8 -*- def login(username,password): ...

26410

扫码关注云+社区