Shell常用命令

1、sort命令

  • 以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序

  • 比较原则:从首字符向后,依次按照ASCII码进行比较,最后将他们按升序输出

1.1、语法格式

sort [选项] 参数
cat 文件 | sort 选项

1.2、常用选项:

不加选项,根据首字母向后排序

参数解释
-nnumeriv-sort,按照数字进行排序
-rreverse,反向排序
-u等同于uniq,表示相同的数据仅显示一行
-t指定字符分隔符,默认使用【Tab】键分割
-k指定排序字段
-o<输出文件>:将排序后的结果转存至指定文件
-f忽略大小写,会将小写字母都转换为大写字母进行比较
-b忽略每行前面的空格

示例:

#-t ':'  以:为分隔符,-k 3 指定第三段排序 -n  从小到大排序
[root@localhost ~]# sort -t ':' -k 3  -n /etc/passwd  
-----------------------------------------------------------------
#将var目录下文件,进行du -a以文件大小显示所有文件,再进按数字大小(-n),倒叙方式(-r),
保存到指定(-o) /opt/du.txt文件里
[root@localhost opt]# cd /var
[root@localhost var]# du -a | sort -nr -o /opt/du.txt

2、uniq命令

  • 用于报告或忽略文件中连续的重复行,常与sort命令结合使用

2.1、语法格式

uniq [选项] 参数
cat  文件 | uniq 选项

只会删除连续重复的行

2.2、常用选项

选项解释
-c进行计数,并删除文件中重复出现的行
-d找出仅显示连续的重复行
-u找出仅显示出现一次的行
示例:
[root@localhost ~]# sort -n test02 | uniq   先sort排序,再-c删除连续重复的行

 

3、tr命令

对标准输入的字符进行替换、压缩、删除

3.1、语法格式

tr [选项] 参数

3.2、常用选项

选项解释
-c保留字符集1的字符,其他字符(包括换行符\n)用字符集2替换
-ddelete,删除所有属于字符集1的字符
-s将重复出现的字符串压缩为一个字符串;用字符集2替换字符集1
-t字符集2替换字符集1,不加选项同结果
参数
字符集1指定要转换或删除的原字符集。
字符集2指定要转换成的目标字符集

提示:

echo -e "abc\ncba\nabab" | tr -c "ab" "0" 
echo -c "xxxxxxxx\e"
----------------------------------------
除了这两种,其他echo都自带换行符

示例:

[root@localhost ~]# echo abc | tr 'a-z'   'A-Z'
ABC
[root@localhost ~]# echo abc | tr 'a'  'A'
Abc
[root@localhost ~]# echo '192.168.96.10' | tr '.'  ' '  
192 168 96 10
-------------------------------------------------------------------
#-c  保留字符集1,除了(ab,换行符)其他换成0
[root@localhost ~]# echo -e "abc\ncba\nabab" | tr -c "ab\n" "0" 
ab0
0ba
abab
-c 保留字符集1,保留ab,包括换行符等其他字符都换成0
[root@localhost ~]# echo -e "abc\ncba\nabab" | tr -c "ab" "0" 
ab000ba0abab0[root@localhost ~]# 
--------------------------------------------------------------------
#-d  删除 
[root@localhost ~]# echo hellow word | tr -d  ' '
hellowword
[root@localhost ~]# echo hellow | tr -d  'lo'
hew
-------------------------------------------------------------------
[root@localhost ~]# echo ‘thisssss is  a test  linnnnne’ |tr -s 'sn'
‘this is a test line’
#-s  压缩并替换
[root@localhost ~]# echo ‘thisssss is  a test  linnnnne’ |tr -s 'sn'  'o'
‘thio io a teot lioe’
--------------------------------------------------------------------
grep -v "^$      删除文件空行
cat  文件名 | tr -s "\n"  删除文件空行
--------------------------------------------------------------------
#tr -s  压缩   sed 替换末尾:  ,并换行
[root@localhost ~]# echo -e "aa\n\n\n\n\n\nbb" |tr -s "\n" ':'|sed  's/:$/\n/'
aa:bb
#赋值给a,${a%:*} a为变量 %为固定格式,意思是从右往左匹配,(:*)指(到:)为止全部删除
[root@localhost ~]# a=$(echo -e "aa\n\n\n\n\n\nbb" |tr -s "\n" ":")
[root@localhost ~]# echo ${a%:*}
aa:bb
--------------------------
#  "#"从左往右匹配,"##"  "%%"指最长匹配,"#""%"为最短匹配
[root@localhost ~]# i='11,22,33,44'
[root@localhost ~]# echo $i
11,22,33,44
[root@localhost ~]# echo ${i%,*}
11,22,33
[root@localhost ~]# echo ${i%%,*}
11
[root@localhost ~]# echo ${i#*,}   
22,33,44
[root@localhost ~]# echo ${i##*,}
44

 

3.3、解决window和linux换行符问题

  • linux中遇到换行符”\n“,会进行回车+换行操作,回车符反而只会作为控制字符(”^M“)显示,不发生回车操作

  • 而window中要回车符+换行符(”\r\n“)才会回车换行,缺少一个控制字符或者顺序不对都不能正确的另起一行

方法一

tr -d " \r"  删除回车符

方法二

[root@localhost ~]# yum install dos2unix.x86_64 -y  利于dos2unix工具
[root@localhost ~]dos2unix  文本文件

4、cut命令

4.1、语法格式

cut 参数
cat 文件 | cut 选项

4.2、常用选项

选项解释
-f通过指定哪一个字符进行提取,使用”TAB“作为默认的字段分隔符
-d”TAB“是默认的分隔符,使用此选项可以更改为其他的分隔符
--complemnet此选项用于排除所指定的字符
--output-delimiter更改输出内容的分隔符

示例:

[root@localhost ~]# cut -d ':' -f 1 /etc/passwd  类似于awk -F: '{print $1}'
[root@localhost ~]# cut -d ':' -f 1-4,6,7  /etc/passwd  显示1-4,6,7字段
[root@localhost ~]# cut -d ':'  --complement -f 1,2  /etc/passwd  删除1,2字段
[root@localhost ~]# cut -d ':'  --complement -f 1,2  /etc/passwd --output-delimiter=' ' 
--output-delimiter=' ' 指定分隔符为' '
--------------------------------------------------------------
#截取字符串方法
[root@localhost ~]# i=123456789
[root@localhost ~]# echo ${i:2:4}   从0开始算
3456
[root@localhost ~]# echo $i | cut -b 3-6   从1开始算
3456
[root@localhost ~]# expr substr $i 3 4      3指从3开始,共有4个字符
3456

5、split命令

linux下将一个大文件拆分成若干小文件

5.1、语法格式

split  选项 参数  原始文件  拆分后文件名前缀

5.2、常用选项

选项解释
-l以行数拆分
-b以大小拆分

示例

[root@localhost ~]# split -l 10 /etc/passwd ./passwd    10行为一个文件拆分

 

6、eval命令

  • 命令字前加elva时,shell会在执行命令之前扫描它两次

  • elva命令会首先扫描命令进行使用的置换,然后再执行该命令

  • 该命令适用于一些扫描无法实现其功能的变量

  • 该命令对变量进行两次扫描

[root@localhost ~]# echo "hellow word" > file
[root@localhost ~]# cat file 
hellow word
[root@localhost ~]# myfile='cat file'
[root@localhost ~]# echo $myfile
cat file
[root@localhost ~]# eval $myfile   扫描两次
hellow word
-----------------------------------------------------
[root@localhost ~]# vim test01.sh
[root@localhost ~]# chmod +x test01.sh
[root@localhost ~]# cat test01.sh 
#!/bin/bash
​
eval echo \$$#     先将$#置换成5   再输出5
[root@localhost ~]# ./test01.sh 1 2 3 4 5
5
[root@localhost ~]# 
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值