首页 > 系统相关 >Shell常用命令

Shell常用命令

时间:2023-05-19 14:12:39浏览次数:38  
标签:sort xargs Shell grep 常用命令 匹配 txt root

Shell常用命令

shell字符

!:                执行历史命令   
!!:                执行上一条命令
$:                变量中取内容符
+ - * / %:        对应数学运算  加 减 乘 除 取余数  
&:                后台执行
;:               分号可以在shell中一行执行多个命令,命令之间用分号分割    
\:                转义字符
``:               反引号 命令中执行命令    echo "today is `date +%F`"
' ':              单引号,脚本中字符串要用单引号引起来,但是不同于双引号的是,单引号不解释变量
" ":              双引号,脚本中出现的字符串可以用双引号引起来

通配符    
~:                家目录    # cd ~ 代表进入用户家目录
*:                星号是shell中的通配符  匹配所有
?:                问号是shell中的通配符  匹配除回车以外的一个字符
[list]: 匹配[list]中的任意单个字符
[!list]: 匹配除list中的任意单个字符
{string1,string2,...}: 匹配string1,string2或更多字符串

重定向
>      覆盖输入 
>> 追加输入
< 输出
<< 追加输出

管道命令
|:               管道符 上一个命令的输出作为下一个命令的输入   cat filename | grep "abc"

数据检索命令

     行检索:grep  egrep

     字符串检索:cut  tr

数据处理命令

数据排序:sort

数据去重: uniq

文本数据合并: paste

数据输出: tee

数据处理: xargs    

1. grep: 负责从数据源中检索对应的字符串,行过滤。

 grep -i root passwd      #忽略大小写匹配包含root的行
 grep -w ftp passwd       #精确匹配ftp单词
 grep -wo ftp passwd      #打印匹配到的关键字ftp
 grep -n root passwd      #打印匹配到root关键字的行好
 grep -ni root passwd      #忽略大小写匹配统计包含关键字root的行
 grep -nic root passwd      #忽略大小写匹配统计包含关键字root的行数
 grep -i ^root passwd       #忽略大小写匹配以root开头的行
 grep bash$ passwd          #匹配以bash结尾的行
 grep -n ^$ passwd          #匹配空行并打印行号
 grep ^# /etc/vsftpd/vsftpd.conf      #匹配以#号开头的行
 grep -v ^# /etc/vsftpd/vsftpd.conf     #匹配不以#号开头的行
 grep -A 5 mail passwd                   #匹配包含mail关键字及其后5行
 grep -B 5 mail passwd                    #匹配包含mail关键字及其前5行
 grep -C 5 mail passwd                   #匹配包含mail关键字及其前后5行

2. cut数据截取

语法:

cut用于列截取

  • -c: 以字符为单位进行分割。
  • -d: 自定义分隔符,默认为制表符。\t
  • -f: 与-d一起使用,指定显示哪个区域。
 cut -d: -f1 1.txt      #以:冒号分割,截取第1列内容
 cut -d: -f1,6,7 1.txt #以:冒号分割,截取第1,6,7列内容
 cut -c4 1.txt        # 截取文件中每行第4个字符
 cut -c1-4 1.txt      #截取文件中每行的1-4个字符
 cut -c4-10 1.txt
 cut -c5- 1.txt       #从第5个字符开始截取后面所有字符

3. tr 字符转换:替换,删除

  tr用来从标准输入中通过替换或删除操作进行字符转换;主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换
语法:

  • -d 删除字符串1中所有输入字符。
  • -s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
  • a-z 任意小写
  • A-Z 任意大写
  • 0-9 任意数字
 tr -d '[:/]' < 3.txt       #删除文件中的:和/
 cat 1.txt |tr -d '[:/]'    #删除文件中的:和/
 tr '[0-9]' '@' < 3.txt      #将文件中的数字替换为@符号
 tr '[a-z]' '[A-Z]' < 3.txt #将文件中的小写字母替换成大写字母
 tr -s '[a-z]' < 3.txt      # 匹配小写字母并将重复的压缩为一个
 tr -s '[a-z0-9]' < 3.txt   #匹配小写字母和数字并将重复的压缩为一个

4.sort排序

  sort:将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
语法:

sort [options] [filename]

  • -u :去除重复行
  • -r :降序排列,默认是升序
  • -o : 将排序结果输出到文件中 类似 重定向符号 >
  • -n :以数字排序,默认是按字符排序
  • -t :分隔符
  • -k :第N列
  • -b :忽略前导空格。
  • -R :随机排序,每次运行的结果均不同。
 sort -n -t: -k3 1.txt     #按照用户的uid进行升序排列
 sort -nr -t: -k3 1.txt     #按照用户的uid进行降序排列
 sort -n 2.txt      #按照数字排序
 sort -nu 2.txt     #按照数字排序并且去重
 sort -nr 2.txt 
 sort -nru 2.txt 
 sort -nru 2.txt 
 sort -n 2.txt -o 3.txt     #按照数字排序并将结果重定向到文件
 sort -R 2.txt 
 sort -u 2.txt 

5.uniq 去除连续的重复行

应用技巧:去重前先使用sort排序

语法:

uniq [options] [filename]

  • -i: 忽略大小写
  • -c: 统计重复行次数
  • -d:只显示重复行
 uniq 2.txt
 uniq -d 2.txt
 uniq -dc 2.txt 

6. tee 双向输出

  tee工具从标准输入读取并写入标准输出和文件,即:双向覆盖重定向<屏幕输出|文本输入>

somecommand |tee filename

  • -a 双向追加重定向
 echo hello world
 echo hello world|tee file1
 cat file1
 echo 999|tee -a file1
 cat file1 

7. paste

  paste工具用于合并文件行输出到屏幕,不会改动源文件

  • -d:自定义间隔符,默认是tab,只接受一个字符
  • -s:将每个文件中的所有内容按照一行输出,文件中的行与行以TAB间隔。
[root@zutuanxue shell01]# cat a.txt 
hello
[root@zutuanxue  shell01]# cat b.txt 
hello world
888
999
[root@zutuanxue  shell01]# paste a.txt b.txt 
hello   hello world
        888
        999
[root@zutuanxue  shell01]# paste b.txt a.txt   
hello world     hello
888
999

[root@zutuanxue shell01]# paste -d'@' b.txt a.txt 
hello world@hello
888@
999@

[root@zutuanxue shell01]# paste -s b.txt a.txt 
hello world     888     999
hello

8.xargs 上一个命令的输出作为下一个命令的命令行参数

OPTIONS:

  • -a file 从文件中读入作为sdtin
  • -E flag flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
  • -p 当每次执行一个argument的时候询问一次用户。
  • -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
  • -t 表示先打印命令,然后再执行。
  • -i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
  • -r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
  • -d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
[root@localhost ~]# cat 2.txt
1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# xargs -a 2.txt
1 2 3 4 5 6 7 8 9 10
[root@localhost ~]# xargs -a 2.txt -p
echo 1 2 3 4 5 6 7 8 9 10 ?...y
1 2 3 4 5 6 7 8 9 10
[root@localhost ~]# xargs -a 2.txt -n3
1 2 3
4 5 6
7 8 9
10
[root@localhost ~]# xargs -a 2.txt  -E5
1 2 3 4
[root@localhost ~]# xargs -a 2.txt -d '@'
1
2
3
4
5
6
7
8
9
10

[root@localhost ~]#

标签:sort,xargs,Shell,grep,常用命令,匹配,txt,root
From: https://www.cnblogs.com/itwangxl/p/17414918.html

相关文章

  • 渗透测试-struts2攻防环境搭建拿shell
    一、下载Jspstudy打开目录D:\JspStudy\tomcat\webapps二、打开struts2并进行拿shell1.打开struts2在浏览器中输入网址http://localhost:8080/struts2-showcase/showcase.action点击上面的Configuration,点击ActionChaining点击上面的Configuration,点击ActionChaining点击......
  • linux学习day04(shell学习)
    shell是一个命令执行器,作用是遵循一定的语法将输入的命令加以解释并传给系统,用户可以用shell来启动、挂起、停止甚至是编写一些程序。shell是用户和linux的桥梁,定义了各种变量和参数,并提供了很多在高阶语言中才具有的控制结构,包括循环和分支,虽然他不是内核的一部分,但是她调用了系......
  • xshell的使用
    安装后找到文件所在位置打开xhell.exe然后点击文件新建 然后设置名称主机主机设为你要连接电脑的ip地址得到此页面 然后输入你要登录的电脑的账户和密码给他创建一个新账户输入useraddliubei(账户名)之后输入passwdliubei设置密码 然后输入idli......
  • PowerShell-将word另存为pdf
    $folderPath="D:\工作\temp\2023年4月19日"$folderPathOut="D:\工作\temp\2023年4月19日"$wordFiles=Get-ChildItem-Path$folderPath-Filter"*.docx"try{Get-Process-Name"*word*"|Stop-Process#避免之前运行失败的......
  • 常用命令行
    netshwinsockresetdockerpullintel/intel-extension-for-pytorch:gpudockerrun-it--device/dev/dri-vL::/data-p7860:7860intel/intel-extension-for-pytorch:gpudockerrun-it--privileged-vL::/data-p7860:7860intel/intel-extension-for-pytorch:gp......
  • shell编程第二天(变量)
    shell第二天变量变量是用一个固定的字符串去表示一个不固定的内容,以便于修改。自定义变量定义变量用户自定义变量是最常用的变量类型,其特点是变量名和变量值都是由用户去定义的。应该怎么定义变量呢?很简单,只需要执行Variablename=Variablevalue即可比如:定义变量namename=666输出变......
  • shell编程第四天(判断)
    文章目录shell编程第四天(判断)shell条件测试数值比较文件测试字符串比较and和or流程控制shell编程第四天(判断)无论是什么编程语言都离不开条件判断,shell编程也是一样的,也就是流程控制。shell条件测试数值比较格式:[数值1操作符数值2],也就是大于,小于,大于等于,小于等于数学中通......
  • shell补遗_一个巨简单的保证服务存活的脚本
    Shell补遗背景公司一台机器总是会在没有更新补丁的情况下启动失败.查看所有的配置都没有问题.但是就是不启动没办法,准备写一个检查进行启动.最近写shell很少.所以总结一下.思路判断有没有服务进程.如果没有服务进程.调用启动服务进程如果有服务进程,那就不做任......
  • 【Jmeter】BeanShell 脚本
    一、BeanShellBeanShell是由java编写的,是一个轻量级的脚本语言,也相当于一个小巧免费的JAVA源码解释器,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己......
  • shell脚本使用ssh远程执行命令通过密码的方式登录
    shell脚本使用ssh远程执行命令通过密码的方式登录sshpass是一个在非交互式ssh会话中自动输入密码的工具。它可以直接在命令行中指定密码,因此可以用于Shell脚本等自动化场景。在RedHat系统中,可以通过epel-release源安装sshpass。epel-release源是ExtraPackagesfor......