linux 命令

sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式:

  sort [-bcfMnrtk][源文件][-o 输出文件] 
补充说明:sort可针对文本文件的内容,以行为单位来排序。

参  数:
  -b   忽略每行前面开始出的空格字符。
  -c   检查文件是否已经按照顺序排序。
  -f   排序时,忽略大小写字母。
  -M   将前面3个字母依照月份的缩写进行排序。
  -n   依照数值的大小排序。
  -o<输出文件>   将排序后的结果存入指定的文件。
  -r   以相反的顺序来排序。
  -t<分隔字符>   指定排序时所用的栏位分隔字符。
  -k  选择以哪个区间进行排序。

列子

进行/boot目录,根据文件大小的顺序输出,从大到小的顺序输出
ls -lA |grep ^- |sort -t ‘ ‘ -nrk 5
ls -lA |grep ^- |sort -nrk 5

-rw-r--r--. 1 root root 43566364 5月 29 2016 initramfs-0-rescue-394ad4829688457ab9375559e4997ede.img
-rw-r--r--. 1 root root 19813159 5月 29 2016 initramfs-3.10.0-327.el7.x86_64.img
-rw-r--r--. 1 root root 17740790 5月 29 2016 initramfs-3.10.0-327.el7.x86_64kdump.img
-rwxr-xr-x. 1 root root 5156528 5月 29 2016 vmlinuz-0-rescue-394ad4829688457ab9375559e4997ede
-rwxr-xr-x. 1 root root 5156528 11月 20 2015 vmlinuz-3.10.0-327.el7.x86_64
-rw-------. 1 root root 2963044 11月 20 2015 System.map-3.10.0-327.el7.x86_64
-rw-r--r--. 1 root root 602631 5月 29 2016 initrd-plymouth.img
-rw-r--r--. 1 root root 252612 11月 20 2015 symvers-3.10.0-327.el7.x86_64.gz
-rw-r--r--. 1 root root 126426 11月 20 2015 config-3.10.0-327.el7.x86_64
-rw-r--r--. 1 root root 166 11月 20 2015 .vmlinuz-3.10.0-327.el7.x86_64.hmac

ps -aux命令可以看到系统中所有运行的进程信息
找出3个占用cpu百分比最多的进程名,最后将进程名输出
ps -aux|sed ‘1d‘ |sort -nrk 3 |head -n 3

找出3个占用内存百分比最多的进程名,最后将进程名输出
ps -aux|sed ‘1d‘ |sort -nrk 4|head -n 3

df命令是查看系统磁盘的使用情况的,通过上网或者--help的方法查询df命令的使用
只输出最大的磁盘名
df -m|sort -nrk 2|head -n 1 |awk ‘{print $1}‘
输出使用磁盘百分比最大的挂载点
df -h|sort -nrk 5 |head -n 1|awk ‘{print $NF}‘
输出可用空间最大的磁盘的挂载点
df -m|sort -nrk 4 |head -n 1|awk ‘{print $NF}‘

awk
    • -F fs or --field-separator fs
      指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
    • -v var=value or --asign var=value
      赋值一个用户定义变量。
    • -f scripfile or --file scriptfile
      从脚本文件中读取awk命令。
    • -mf nnn and -mr nnn
      对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
    • -W compact or --compat, -W traditional or --traditional
      在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。
    • -W copyleft or --copyleft, -W copyright or --copyright
      打印简短的版权信息。
    • -W help or --help, -W usage or --usage
      打印全部awk选项和每个选项的简短说明。
    • -W lint or --lint
      打印不能向传统unix平台移植的结构的警告。
    • -W lint-old or --lint-old
      打印关于不能向传统unix平台移植的结构的警告。
    • -W posix
      打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符**和**=不能代替^和^=;fflush无效。
    • -W re-interval or --re-inerval
      允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。
    • -W source program-text or --source program-text
      使用program-text作为源代码,可与-f命令混用。
    • -W version or --version
      打印bug报告信息的版本。

1、去重,有多行一样的只显示一行
sort 1.txt | uniq
2、输出行重复的次数,按重复次数从大到小的顺序输出
cat 1.txt |sort |uniq -c //显示每一项重复的次数
cat 1.txt |sort |uniq -c |sort -rnk 1

3、输出独一无二的行,即没有重复的行
cat test.txt |sort |uniq -u

windows:
1、excel、word

linux:

通过uniq --help或者上网去学习uniq命令的使用

##################################################################################

unix2dos //从linux转换到windows 原理:在换行符前面加上回车符^M

dos2unix //从windows转换到linux 原理:去掉每一行的回车符^M

grep  ‘模式‘   文件
grep   [选项]  ‘模式‘   文件

选项
-n     显示被匹配到的内容所在的行号
-o     只显示被匹配到的内容
-v     取反,取匹配到行之外的外,

模式可以使用单引号,也可以使用双引号
一般我们就使用单引号

模式
1、可以一个明确的字符或者字符串
如:grep  ‘root‘   file           //会将含有root的行全部输出
    grep  -n   ‘root‘   file      //将含有root行输出,并打印行号

基本正则表达式,
元字符
^      行起始标记                                  如^root匹配以root开头的行
$      行尾标记                                    如root$匹配以root结尾的行
.      任意一个字符                                如wor.d能够匹配world,worad、worbd等,因为.能够匹配任意一个字符
[]     匹配包含在[字符]之中任意一个字符	           如a[ab]c能够匹配aac或abc
[^]    匹配[^字符]里面字符之外的任意一个字符       如a[^ac]c,能够匹配a.c,但是.不能够是a或者c,  能匹配 a1c 、a2c 、 afc等只要中间不是a或者c都可以
\      转义字符                                    可以将上面的无字字符进行转义,如‘\$‘可以忽略$的特殊意义
*      匹配之前的项0次或者多次                     如ft*  可以匹配f     ft     ftt     fttt        fttttttttttttttttt             

【.*    任意个字符,0个或者多个】

安装httpd,将它的主配置文件,复制到/opt目录
练习:
1、只查看文件中含有Listen的行
2、只查看文件中以Listen开头的行
3、只查看以数字结尾的行
4、查看以<开头并且以>结尾的行
5、查看文件中含有if或者If的行                     ##grep ‘[Ii]f‘  file.txt
6、不显示文件中以#号开头的所有内容                ##grep ‘^#‘  -v
7、不显示文件里的空白行                           ##grep ‘^$‘  -v
8、使用ifconfig命令结合grep命令的方式,输出系统中所有的网卡
9、使用date命令结合grep的方式,输出系统中的时间   ##date |grep ‘[0-9][0-9]:[0-9][0-9]:[0-9][0-9]‘ -o

扩展的正则元字符
(要使用扩展正则表达式,3种方式,
1、使用egrep命令
2、使用grep  -E
3、使用grep命令,但是遇到元字符的时候、就要加上转义
?        匹配之前的项0次或者1次
+        匹配之前的项1次或者多次
{n}      匹配之前的项n次
{n,m}    匹配之前的项n到m次,包括n或者m
{n,}     匹配之前的项n任意次
()       "组"字符串,如(ab)*,代表0个或者多个ab的组合
|        或者,即匹配|两边的任意一项

<>       <内容>中的内容必须以单词出现,<和>都需要加上转义字符

练习:
1、查看文件中,以2个数字结尾的行
2、显示/etc/passwd文中的两位数或者三位数
3、通过shell脚本,让用户输入,判断用户输入的是否是一个合格的纯数字

a-z       ==     [:lower:]
A-Z       ==     [:upper:]
a-zA-Z    ==     [:alpha:]
0-9       ==     [:digit:]
特殊符    ==     [:punct:]

\s     表示空白符

1、过滤下面文本的ip地址
aoot:x:0:0:Root:/aoot:$/bin/bash
root:x:0:0:root:/root:/bin/bash
x:0:0:root:/root:/bin/bash/root
root:0:0:root:/root:/bin/bash/root
ftp:x:14:50:FTP ^User:/var/ftp:/sbin/nologin
fap:x:14:50:FTP 256.258.1.2  U$ser:/var/ftp:/sbin/nologin
192.168.100.140   252130613a1
0.0.0.127   13608001910
172.16.299.1  00.00.00.00:00:00
169.169.1.2
aabc$

[第一段].[第二段].[第三段].[第四段]

1位数:0-9
2位数:10-99
3位数:1xx    200-249    250-255

tr的作用

1、替换,只能替换单个字符
echo abc | tr  ‘a-z‘  ‘A-Z‘
a--->A
b--->B

cat file | tr ‘a-z‘  ‘A-Z‘    将文本里的全部小写转换成大小
cat file | tr ‘A-Z‘  ‘a-z‘    将文本里的全部小写转换成大小

2、删除作用,也只是删除单个字符
tr   -d    ‘参数‘
tr   -d  ‘a-z‘   删除全部的小写字母
tr   -d  ‘0-9‘   删除全部的数字

3、压缩后再替换
tr -s  ‘\n‘   ‘,‘        #先将多个连续的\n换行符压缩,压缩之后再进行替换
.          任意单个字符
*          匹配前面的项0次到多次
[]         匹配[]内的任意单个字符
[^]        排除[]内的任意单个字符

^          以什么开头
$          以什么结尾

()       可以加入元字符,串组       

?          匹配前面的项0次到1次
+          匹配前面的项1次到多次
{n,m}      匹配前面的项n次到m次

<>          

grep匹配的原则:采用贪婪模式,会进行最长的匹配

-B  n    将匹配内容所有的行的前面n行也进行输出
-A  n    将匹配内容所有的行的后面n行也进行输出
-C  n    将匹配内容所有的行的前后n行也进行输出

-v       将匹配内容所有行之外的行输出
-E       启动扩展正则支持
-i       忽略大小写

-n       将匹配的模式所有的行号也进行输出

-o       仅显示被匹配到的内容
-c       统计被匹配到的内容一共有多少

-f  file    使用指定的文件里的模式,如果有项,写到多行,最终进行或关系的查询

-H       输出每一个被匹配到的行前面加上它所在的文件名

-l       仅仅输出匹配到的模式所在的文件名,只输出文件名
-L       ~~~~~~~~~~~~~~~~
-w       当后面的模式为一个单词,才算匹配到

文本处理

grep   vim   

cat
tac  

head  -n  a   ##输出前面a行
tail  -n  a   ##输出后面a行

sed命令

sed  [选项]   ‘command‘    ......

动作:
p      打印输出
d      删除操作
a      在指定的行后面添加一行内容
i      在指定的行前面添加一行内容

1、查看操作
sed  -n   ‘5p‘   file     //只查看文件的第5行
sed  -n   ‘3,5p‘  file    //查看文件的第3到第5行
sed -n ‘5,$ p‘   file     //打印第5到最后一行

2、删除操作
sed ‘3 d‘ 1.txt       //删除文件的第3行 ,然后将内容进行输出,不是直接操作的文件,
sed ‘3,5 d‘ 1.txt
sed ‘3,$ d‘ 1.txt

sed在操作文件,只有加上-i选项才是直接操作

3、添加操作

sed  ‘2a word‘  file           //在第二行后面添加一行,内容为word   ,即添加的内容为第三行
sed  ‘3i word‘  file           //在第三行前面添加一行,内容为word   ,即添加的内容为第三行

思考:怎么在指定行后面添加2行内容

3、查找操作
sed  -n  ‘/root/p‘ file       //只输出root关键字的行

sed  ‘/root/d‘  file                    //将含有root的行删除,然后输出,,加上-i可以操作原文件

4、替换操作
sed ‘s/root/new/‘   file            //将文件中的root替换成new,每行只替换一次,加上-i可以操作原文件
sed ‘s/root/new/g‘   file            //将每行的所有root全部替换成new
sed ‘3,4s/root/new/g‘ 1.txt          //只替换第3到第4行的root为new

练习:
1、selinux配置文件的SELINUX默认的值为enforcing,使用sed将其修改为permissive
将/etc/passwd复制到/opt目录进行操作
2、使用sed命令输出/etc/passwd的第5到第7行的内容
4、将passwd文件中第2到第3行的所有d替换成DD

5、只输出passwd文件的第6段内容
cat /etc/passwd|grep ‘/.*‘ -o |sed ‘s/:.*//‘

cat /etc/passwd | cut -d ‘:‘ -f 6

了解一下cut命令的使用方法

思考:

1.将/etc/passwd最后一段全部改成/bin/bash

cat /etc/passwd|sed  ‘s/\(.*:\)\(.*\)/\1\/bin\/bash/‘
cat /etc/passwd|grep ‘\(.*:\)‘ -o  |sed ‘s/$/\/bin\/bash/‘

\1  代表前面第一个小括号中匹配的内容
\2  代表前面第二个小括号中匹配的内容

&   代表所有匹配的内容

2.将/etc/passwd每行前面的用户名,添加到最后一段
如:root:x:0:0:root:/root:/bin/bash
处理后应该为
    root:x:0:0:root:/root:/bin/bash:root

3.一文本内容如下:
192.168.100.2
172.16.5.4
10.101.2.5
133.37.25.21

通过命令将其处理成如下效果(转换到一行,通过逗号隔开,每行内容用单引号引起来):
‘192.168.100.2‘,‘172.16.5.4‘,‘10.101.2.5‘,‘133.37.25.21‘

cut命令,以指定分隔符分隔的段输出

cat /etc/passwd |cut -d ‘:‘ -f 7    //只看第7段的内容
cat /etc/passwd |cut -d ‘:‘ -f 1,3,5   //只看第1段、第3段、第5段

cut -d ‘:‘ -f 1-5   //第一到第5段
cut -c  1-5     //输出每行前面的第1到第5个字符
cut -c 3-       //输出第3个字符到最后一个字符

tac cat反向输出
时间: 2024-10-23 11:52:57

linux 命令的相关文章

linux命令格式,获取帮助及其目录结构简要理解

我们都知道,一台计算机要是没通电,和一堆废铁没什么区别.那么,通电开机进入系统后,会进入交互界面,等待用户操作,人与计算机交互界面有两种: GUI:图形用户接口.如我们平时使用的Windows  ,linux的X window,有KDE和GOME. CLI:命令行接口,使用的SHELL类型有bash ,csh,tcshell,zshell等. 例如:[[email protected] ~]# commandbin root:当前登录的用户名. dxlcentOS:当前主机的主机名.@是一个分隔

linux 命令 及学习进度综合整理

linux  命令  及学习进度综合整理 pwd 查看当前所在位置 cd  跳转到什么什么目录 ls  显示所有文件和目录 ls -l  显示目录详细信息 cd ..  返回上一级 vi  lnany.txt  创建一个文件 vi  .lnany.txt    创建一个隐藏文件 vim 是 vi 的升级版 功能更多 出现 -bash: vim: command not found 的解决办法 i. 那么如何安裝 vim 呢?输入rpm -qa|grep vim 命令, 如果 vim 已经正确安裝

9个使用时必须时刻警惕的Linux命令

Linux shell/terminal命令非常强大,即使一个简单的命令就可能导致文件夹.文件或者路径文件夹等被删除.为了避免这样的事情发生,我们应该时刻注意PHP代码&命令,今天为大家带来9个必须时刻警惕的Linux命令&代码. Linux shell/terminal 命令非常强大,即使一个简单的命令就可能导致文件夹.文件或者路径文件夹等被删除. 在一些情况下,Linux 甚至不会询问你而直接执行命令,导致你丢失各种数据信息. 一般来说在 Web 上推荐新的 Linux 用户执行这些命

Linux命令之scp

Linux命令之scp 功能说明 scp 是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且 scp传输是加密的.可能会稍微影响一下速度.当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来.另 外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了.虽然 rsync比scp会快一点,但当小文件众多的情况 下,rsync会导致硬盘I/O非常高

linux命令--top命令&free命令

top命令是用来查看系统性能的工具,能够实时显示各个进程的状况,包括进程ID.内存占用率.CPU占用率等. top - 23:12:04 up 79 days,  8:14,  1 user,  load average: 0.00, 0.01, 0.05 Tasks: 573 total,   2 running, 571 sleeping,   0 stopped,   0 zombie Cpu(s):  0.2%us,  0.4%sy,  0.0%ni, 99.5%id,  0.0%wa,

linux命令学习笔记

操作文件和目录: copy: $ cp file1 file2 $ cp -r dir1 dir2 move: $ mv file .. $ mv file dir/ rename: $ mv file1 file2 $ mv dir1 dir2 # dir2如果存在,则为移动操作 remove: $ rm file $ rm -r dir 创建文件: $ touch a.txt $ >a.txt 创建目录: $ mkdir dir 查看文件: #一般 $ cat file #查看文件类型: $

cv:显示Linux命令运行进度

cv: 显示 cp.mv 等命令的进度 2014-07-14 By toy Posted in Apps Edit on GitHub 在 Linux 系统中 , 大多数命令从来都是信奉 “ 沉默是金 ” 的准则 , 所以当我们利用 cp 复制文件的时候并不能看到所谓的进度条 . 如果你在意这一点 , 那么不妨来用用 cv. cv 是 Coreutils Viewer, 它能够显示传输数据的进度 , 包括百分比 . 大小 . 以及速率等信息 .cv 支持 coreutils 中的基本命令 , 比

三个网站让你成为Linux命令行高手

[转载自http://www.linuxeden.com/html/news/20091119/69183.html] Linux的命令行是通向Linux高级应用的必经之路,Linux系统管理员.开发者都是学习对象.Susan Linton向我们推荐了三个学习Linux命令行的网站,现在介绍给大家: 1. LinuxCommand LinuxCommand是一个学习Linux命令行最好的网站之一.网站分为:学习Shell.写Shell脚本.脚本库.超级MAN页面. 2. O'Reilly的Lin

linux 命令解析2

基本命令  uname -a -s hostname显示主机名若是要永久生效,则编辑以下文件  #vim /etc/sysconfig/network    ssh远程登录#ssh 10.1.1.54 (是以root用户登录的)  #ssh [email protected](是以tom身份登录)  #ssh -Y 10.1.1.54(可以启动图形界面的远程登陆) scp远程拷贝  #scp 10.1.1.54:/etc/passwd /tmp/test(将目的地址10.1.1.54上的/etc

Windows下使用linux命令

我参阅了这份文章: 让windows cmd也用上linux命令 原文时间有点久了,Cygwin也更新了... 所以我的做法简单了很多... 到Cygwin官网下载安装包:https://cygwin.com/install.html 一路安装下去... 假如安装路径是:C:\cygwin64 那么就在环境变量Path后面加上C:\cygwin64\bin 好了,完成了,没别的了 觉得太简单了?那我补充下,Cygwin官网下载下来的不能叫安装包,叫引导程序比较合适.英文好的可以看该页面的Q&A,