Linux学习(二十二)Shell基础(三)特殊符号、sort、wc、uniq、tee、tr、split

一、特殊符号

* :任意个任意字符

[[email protected] ~]# ls 1*
1bak.zip  1.tar  1.zip.bz2

1:
1.txt  2
[[email protected] ~]# ls 1*2

?:一个任意字符

[[email protected] ~]# ls 2?tar
2.tar

#:注释

[[email protected] ~]# #ls
[[email protected] ~]# 

\:脱意

[[email protected] ~]# a=3
[[email protected] ~]# echo $a
3
[[email protected] ~]# echo \$a
$a
[[email protected] ~]# echo "\$a"
$a

|:管道符号

管道符号的作用,是把上一条命令的输出作为下一条命令的标准输入:

[[email protected] ~]# ls|wc -l
21

二、sort

sort命令是用来排序的。

默认按照首字母的ascii码排序:

[[email protected] ~]# ls|sort
1
1bak.zip
1.tar
1.zip.bz2
2
2.tar
3
33.tar
3.tar.gz
3.zip
4.tar
4.tar.bip2
4.zip
5
5.zip
6
7.txt
8.txt
999.txt
9.txt
[[email protected] ~]# cat 3.txt | sort

[
$
$
%^
3
33
55
6
6
666
dfd
dfdf
e
gr
kQ$
Q$
Q$
t

按数字排序:

[[email protected] ~]# sort -n 3.txt

[
$
$
%^
dfd
dfdf
e
gr
kQ$
Q$
Q$
t
3
6
6
33
55
666

实验发现当按数字排序的时候,字母和特殊字符都被当成0了。

倒序:

[[email protected] ~]# sort -r 3.txt
t
Q$
Q$
kQ$
gr
e
dfdf
dfd
666
6
6
55
33
3
%^
$
$
[

分段排序:

[[email protected] ~]# sort -t: -nrk3 666.txt
ruanwenwu:x:1000:1000::/home/ruanwenwu:/bin/bash
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

三、cut

cut命令是用来切割的。-d指定分隔符,-f指定段数,-c指定几个字符

[[email protected] ~]# cut -d : -f 3,4 666.txt
0:0
1:1
2:2
3:4
4:7
5:0
6:0
7:0
8:12
11:0
12:100
14:50
99:99
999:997
192:192
81:81
59:996
59:59
89:89
74:74
1000:1000
[[email protected] ~]# cut -d : -f 3,4 -c1 666.txt
cut: 只能指定列表中的一种类型
Try ‘cut --help‘ for more information.

实验说明,不能既分段切割,又截取字符。

截取字符:

[[email protected] ~]# cut -c 2-4 666.txt
oot
in:
aem
dm:
p:x
ync

四、wc

wc命令用来统计行数(最常用),单词数和字数。

wc -l统计行数。

wc -w统计单词数。

wc -m或者wc -c统计字母数。这两个命令会把隐藏的字母算在内。

[[email protected] ~]# vim 777.txt
[[email protected] ~]# wc -c 777.txt
19 777.txt
[[email protected] ~]# cat 777.txt
df dd
cc
dd dd dd

[[email protected] ~]# cat -A 777.txt
df dd$
cc$
dd dd dd$
$
[[email protected] ~]# wc -m 777.txt
19 777.txt
[[email protected] ~]# wc -w 777.txt
6 777.txt

五、uniq

uniq命令经常和sort命令一起用。因为如果两个相同的行不在一起,就无法uniq。

[[email protected] ~]# uniq 1.txt
3
4
3
5
6
7
87
8

我们先sort再uniq看看呢:

[[email protected] ~]# sort 1.txt|uniq
3
4
5
6
7
8
87

uniq -c显示每行重复的次数:

[[email protected] ~]# sort 1.txt|uniq -c
      2 3
      1 4
      1 5
      1 6
      1 7
      1 8
      1 87

六、tee

tee命令的作用是接受标准输入,并重定向,将标准输入打印出来。

[[email protected] ~]# cat 1.txt|tee 3.txt
dffdf
[[email protected] ~]# cat 1.txt|tee -a 3.txt
dffdf
[[email protected] ~]# cat 1.txt|tee -a 3.txt
dffdf
[[email protected] ~]# cat 1.txt|tee -a 3.txt
dffdf
[[email protected] ~]# cat 3.txt
dffdf
dffdf
dffdf
dffdf

七、tr

tr命令的作用是将标准输入替换。

[[email protected] ~]# tr ‘a-z‘ ‘A-Z‘ ‘sdfsdfsgdgfs‘
tr: 额外的操作数 "sdfsdfsgdgfs"
Try ‘tr --help‘ for more information.
[[email protected] ~]# tr ‘a-z‘ ‘A-Z‘
dfdfdfdfdfdfd
DFDFDFDFDFDFD

八、split

split是切割文件。split可以按行切(split -l),也可以按大小切(split -b)。

首先我们来准备一个大文件。将系统中所有的conf文件合并到a.txt。

[[email protected] ~]# find / -type f -name "*.conf" -exec cat {} >> a.txt \;

按行切:

[[email protected] ~]# du -sh a.txt
544K    a.txt
[[email protected] ~]# wc -l a.txt
21746 a.txt
[[email protected] ~]# mkdir /tmp/test2
[[email protected] ~]# mv a.txt /tmp/test2/
[[email protected] ~]# cd !$
cd /tmp/test2/
[[email protected] test2]# ls
a.txt
[[email protected] test2]# ls -l
总用量 544
-rw-r--r--. 1 root root 554540 11月 18 12:37 a.txt
[[email protected] test2]# wc -l a.txt
21746 a.txt
[[email protected] test2]# wc -l 10000 a.txt
wc: 10000: 没有那个文件或目录
 21746 a.txt
 21746 总用量
[[email protected] test2]# ls
a.txt
[[email protected] test2]# split -l 10000 a.txt
[[email protected] test2]# ls
a.txt  xaa  xab  xac

按大小切:

[[email protected] test2]# !find
find / -type f -name "*.conf" -exec cat {} >> a.txt \;
[[email protected] test2]# ls
a.txt
[[email protected] test2]# split -b 100k a.txt
[[email protected] test2]# ls
a.txt  xaa  xab  xac  xad  xae  xaf

指定分割文件前缀:

[[email protected] test2]# split -b 100k a.txt abc.
[[email protected] test2]# ls
abc.aa  abc.ab  abc.ac  abc.ad  abc.ae  abc.af  a.txt

九、特殊符号

注意:||是如果前面的命令执行了,后面的就不执行了。

[[email protected] test2]# [ -d ruanwenwu ] || mkdir ruanwenwu
[[email protected] test2]# ls
abc.aa  abc.ab  abc.ac  abc.ad  abc.ae  abc.af  a.txt  ruanwenwu
时间: 2024-10-29 19:11:13

Linux学习(二十二)Shell基础(三)特殊符号、sort、wc、uniq、tee、tr、split的相关文章

Linux CentOS 7 shell中的特殊字符及与管道相关的命令(cut,sort,wc,uniq,tee,tr,split)

一. shell特殊符号cut命令 1.特殊符号 * :任意个任意字符 ? :任意单个字符# :注释\ :转义字符 | :管道符 2.几个和管道相关的命令 (1) cut cut 把文件分段 cat /etc/passwd cut -d: -f 3  /etc/passwd    cut -d: -f 3,6,5  /etc/passwd cut -d: -f 3-6  /etc/passwd cut -c 10 /etc/passwd   取第十个字符 cut -c 5-10 /etc/pas

65.shell特殊符号与和cut,sort,wc,uniq,tee,tr,split命令

liunx的特殊符号 代表字母或者数字 多个 ? 任意一个字符"#" 注释\ 脱义字符| 管道符 1.* 代表任意个任意字符或者数字 [[email protected] /]# ls *.txt1.txt[[email protected] /]# 2.?任意一个字符 [[email protected] /]# ls ?.txt1.txt[[email protected] /]# 3.注释 [[email protected] /]# #11111[[email protecte

Linux学习第十二周总结

linux学习第十一周总结 http协议和APACHE 实现LAMP架构 日志管理 网络文件共享服务 一 .HTTP协议和apache 1.HTTP 简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议. HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等). HTTP是一个属于应用层的面向对象的协议,由于其简捷.

Linux学习之十二-Linux文件属性

Linux文件属性 在Linux中,对于每个文件都有相应属性,以Linux中root用户家目录下新建文件a.txt为例,在a.txt中输入几个字符 使用命令ls -ild a.txt查看文件的权限等 [[email protected] ~]# ls -ild a.txt 1057689 -rw-r--r--. 1 root root 8 Apr 9 19:42 a.txt 说明: 第一列:1057689    文件的inode号 第二列第1位:-        文件类型,常见的文件类型有 d:

Linux学习笔记十二:进程管理

1.查看进程 第一种,用w查看进程: [[email protected] ~]# w 05:22:23 up 14 min, 2 users, load average: 0.00, 0.02, 0.06 USER TTY FROM [email protected] IDLE JCPU PCPU WHAT chenyr tty1 :0 05:08 14:38 2.35s 0.23s pam: gdm-passwo chanshuy pts/0 192.168.230.1 05:09 0.00

Linux学习笔记<十二>——磁盘管理

设备文件: b:块文件,按块为单位,随机访问的设备,如磁盘 c:字符文件,按字符为单位,访问有先后次序的线性设备,如键盘 ls -l查看设备文件,原显示大小的列改显示为 主设备号(major number) 用于标识设备类型 次设备号(minor number) 用于标识同一种类型的不同设备 mknod 创建块或字符设备文件 mknod [OPTION]... NAME TYPE [MAJOR MINOR] -m MODE 指定权限 例子:mknod -m 640 mydev c 66 0 硬盘

Linux学习笔记十二周一次课(4月23日)

12.1 LNMP架构介绍 12.2 MySQL安装 进入下载目录cd /usr/local/src 查看已下载的文件ls 查看进程是否运行ps aux | grep mysql 删除安装目录rm -rf /usr/local/mysql 删除服务rm -rf /etc/init.d/mysqld 修改配置文件vim /etc/my.cnf //不修改,保留即可: 进入下载目录cd /usr/local/src wget http://mirrors.sohu.com/mysql/MySQL-5

Linux学习笔记十二周二次课(4月24日)

12.6 Nginx安装 cd /usr/local/src wget http://nginx.org/download/nginx-1.8.0.tar.gz tar zxvf nginx-1.8.0.tar.gz ./configure --prefix=/usr/local/nginx make && make install 查看配置文件是否有错 -t /usr/local/nginx/sbin/nginx -t 启动脚本编辑: vim /etc/init.d/nginx //复制

Linux学习笔记十二周三次课 (4月25日)

12.10 Nginx访问日志 vim /usr/local/nginx/conf/nginx.conf //搜索log_format $remote_addr //客户端P(公网IP) $http_x_forwarded_for //代理服务器的IP $time_local //服务器本地时间 $host //访问主机名(域名) $request_uri //访问的url地址 $status //状态码 $http_referer //referer $http_user_agent //us

Linux学习笔记十二周四次课(4月26日)

12.13 Nginx防盗链 防盗链,就是禁止其他网址链接到本网站图片文本等资源: vim /usr/local/nginx/conf/vhost/test.com.conf //server中添加以下信息 ---------------------------------------------------------------------------------- location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jp