Linux常用的管线命令(pipe)和非管线命令

只介绍命令和对应的功能,详细用法可针对性的自行搜索
管线命令基本上都是对文本进行截取的功能,据我观察,他们基本上会以行为单位。
以下命令都可以用在管道上,但是有些也可以单独使用。
以下演示的文件是用last | head -n 12 > lastfile命令得到的。
1、cut:对文本进行截取
参数:
-d:对文本按照指定的符号进行分片,然后显示指定的部分分片
-c:以字符为单位去除固定字符区间
举例:

cat lastfile | cut -d ':' -f 3
cat lastfile | cut -c 2-

2、grep:对文本进行过滤
参数:
无参时:显示所有带有指定字符串的行,并对指定字符串高亮
-c:只计算指定字符串的次数
-i:忽略大小写
举例:

cat lastfile | grep 'down'

3、sort:以指定规则对文本进行排序,以行为单位
参数:
无参时:按照每行前面的字母进行排序
-f:忽略大小写
-t:可以指定分隔符按照指定的分片进行排序,默认为tab
举例:

cat lastfile | sort -t '-' -k 2

4、uniq:去重
参数:
-i:忽略大小写
-c:计数
举例:

cat lastfile | cut -d ' ' -f 1 | sort | uniq -c

5、wc:计算行数,字符数
参数:
无参时:全计算
-l:仅计算行数
-w:仅计算英文字数,以四个字符为一个字
-m:计算总字符数,会把换行符当作一个字符计算
举例:

cat lastfile | wc

6、tee:转存
参数:
-a:以累加形式写入文件
举例:

cat lastfile | tee -a lfile | cut -d ':' -f 3

7、tr:删除或者替换指定字符,不能改变字符串
参数:
-d:删除指定字符串
-s:指定一个字符删除该字符相邻的相同字符,或者指定两个字符用后边的字符取代前边的字符或者重复字符串
举例:

cat lastfile | tr 'r' 'd'
cat lastfile | tr -d ':'
cat lastfile | tr -s 'o' 'i'
cat lastfile | tr -s 'o'

8、col:将tab按键边冲空白键,基本上用来转码之类的
9、join:两个文件当中,有 “相同数据” 的那一行,才将他加在一起,要求文件已排序
参数:
无参时:以tab键位分隔符
-t:可以指定字符进行分隔
-i:忽略大小写
-1:指定文件1中用于连接的字段号
-2:指定文件2中用于连接的字段号
举例:

join -t ':' -1 4 /etc/passwd -2 3 /etc/group | head -n 3

在这里插入图片描述
10、paste:直接将两行粘在一起
参数:
-d:指定分隔符,默认是制表符
- :表示来自标准输入
举例:

paste -d '@' lastfile lfile
paste -d '@' lastfile -

11、expand:将制表符转为空格
unexpand:将空格转为制表符
12、split:把一个大文件分割成多个小文件
参数:
-b:指定分区的文件大小,后可跟单位:b,k,m等
-l:以行数进行分区
prefix:可指定小文件的文件名前缀
举例:

split -b 10k lastfile prefix
split -l 2 lastfile prefix

13、xargs:可以让无法使用管道符的命令使用管道符
参数:
-0 :如果输入的 stdin 含有特殊字符,例如 `, , 空白键等等字符时,这个 -0 参数可以将他还原成一般字符。这个参数可以用于特殊状态喔!
-e :这个是 EOF (end of file) 的意思。后面可以接一个字串,当 xargs 分析到这个字串时,就会停止继续工作!
-p :在执行每个指令的 argument 时,都会询问使用者的意思;
-n :后面接次数,每次 command 指令执行时,要使用几个参数的意思。
当 xargs 后面没有接任何的指令时,默认是以 echo 来进行输出!
举例:

find /usr/sbin -perm /7000 | ls -l  #这样的话ls 也会执行,但是跟前面的无法关联上,管道符前后的两个命令各自执行
find /usr/sbin -perm /7000 | xargs ls -l  #这样的话就可以用ls -l查看前面查询结果的具体信息

14、-:减号可以当作管道前后的一个替代符,有时候管道前输入的东西需要在命令中间,管道后无法直接接受并处理
举例:

tar -cvf - /home | tar -xvf - -C /tmp/homeback

15、sed:搜寻、删除和修改文件内容
这是一个很强大的命令
sed [-nefr] [动作]
参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令行界面上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以执行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正则表达式的语法。(默认是基础正则表达式语法)
-i :直接修改读取的文件内容,而不是由屏幕输出。
动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表“选择进行动作的行数”,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则“ 10,20[动作行为] ”function 有下面这些咚咚:
a:新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c:取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d:删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i:插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p:打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s:取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!例如 1,20s/要被取代的字串/新的字串/g
举例:
nl lastfile | sed '2,5d':删除第2~5行,d就是删除的意思
nl lastfile | sed '2,5c characters of replace':用characters of replace取代2~5行的所有内容

sed -i '2,5c characters of replace' lastfile:直接修改源文件
16、awk:数据处理
参数:
awk ‘条件类型1{动作1} 条件类型2{动作2} …’ filename
举例:

last -n 5 | awk '{print $1 "\t" $3}' # 取出last前五行中的第1列和第三列

awk也可以加变量名称

变量名称代表意义
NF每一行 ($0) 拥有的字段总数
NR目前 awk 所处理的是“第几行”数据
FS目前的分隔字符,默认是空白键
举例:
last -n 5| awk '{print $1 "\t lines: " NR "\t columns: " NF}'

在这里插入图片描述
当成条件{FS=“:”} $3 < 10成立时,执行 {print $1 "\t " $3}。

cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t " $3}' 

非管线命令
1、diff:对比两个文件
参数:

diff [-bBi] from-file to-file
选项与参数:
from-file :一个文件名,作为原始比对文件的文件名;
to-file:一个文件名,作为目的比对文件的文件名;
注意,from-file 或 to-file 可以 - 取代,那个 - 代表“Standard input”之意。
-b:忽略一行当中,仅有多个空白的差异(例如 "about me" 与 "about       me"视为相同
-B:忽略空白行的差异。
-i:忽略大小写的不同。

举例:
在这里插入图片描述

4d3<==左边第四行被删除 (d) 掉了,基准是右边的第三行
< adm:x:3:4:adm:/var/adm:/sbin/nologin <==这边列出左边(<)文件被删除的那一行内容
6c5<==左边文件的第六行被取代 (c) 成右边文件的第五行
< sync:x:5:0:sync:/sbin:/bin/sync <==左边(<)文件第六行内容
---
> no six line<==右边(>)文件第五行内容

2、cmp:对比两个文件,主要以字节为单位对比,用途没有diff广泛

cmp [-l] file1 file2
参数:
-l :将所有的不同点的字节处都列出来。因为 cmp 默认仅会输出第一个发现的不同点。

举例:

cmp passwd.old passwd.new

3、patch:补丁命令,主要与diff搭配使用
参数:

patch -pN < patch_file <==更新
patch -R -pN < patch_file <==还原
-p:后面可以接“取消几层目录”的意思。
-R:代表还原,将新的文件还原成原来旧的版本。

举例:

diff -Naur passwd.old passwd.new > passwd.patch
cat passwd.patch
patch -p0 < passwd.patch
ll passwd*
patch -R -p0 < passwd.patch
ll passwd*

在这里插入图片描述
4、pr:文件打印准备,可以设置文件打印时的表头

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值