Shell脚本中管道的几种使用实例讲解
管道经常用于拼接命令,通过管道可以执行一些复杂的数据处理操作。以下为在shell中使用管道处理数据的的几个实例
示例1:生成一个8位的随机密码
tr -dc A-Za-z0-9_ </dev/urandom | head -c 8 | xargs
示例2:查看系统中所有的用户名称,并按字母排序
awk -F: '{print $1}' /etc/passwd | sort
示例3:列出当前用户使用最多的5个命令(print的列数根据实际情况而定)
history | awk '{print $2}' | sort | uniq -u | sort -rn | head -5
示例4:查看系统中有哪些用户的登陆shell时/bin/bash
cat /etc/passwd | grep "/bin/bash" | cut -d: -f1,6 #cut -d: -f1,6 表示以:为分隔符显示第1和第6列的内容-d指定分隔符,-f指定列
示例5:查看当前目录的子目录个数
ls -l | cut -c 1 | grep "d" | wc -l #ls -l 长格式列出当前目录的所有内容,每行的第一个字符表示文件的类 #cut -c 1 截取每行的第一个字符 #grep "d" 获取文件类型是目录的行 #wc -l 统计grep命令输出的行数,即子目录个数
示例6:合并两个文件的内容
cat 1.txt | paste -d: 2.txt - #paste -d: 2.txt - 表示以:为分割符合并两个文件,合并时2.txt文件的内容在前 -代表1.txt文件
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
相关推荐
-
Shell中的while循环几种使用实例详解
1.利用while循环计算1到100的和: 示例代码1: #!/bin/bash i=1 sum=0 while [ $i -le 100 ] do let sum=sum+$i let i++ done echo $sum 示例代码2:利用while循环计算1到100之间所有奇数之和 #!/bin/bash i=1 sum=0 while [ $i -le 100 ] do let sum=sum+$i let i+=2 done echo $sum 示例代码3:利用while循环计算1到10
-
Linux Shell在目录下使用for循环结合if查找文件的巧用
1.for循环对目录做遍历,if判断文件是否为要查找的文件. 示例1: #!/bin/bash if [ $# -lt 1 ];then echo "Usage:$0 + filepath" exit fi #判断用户是否输入了参数 match=$1 #将要查的文件赋值给变量match found=0 #定义一个初始变量作为发生条件,当文件找到时对此变量重新赋值 for file in /etc/* #对目录进行遍历 do if [ $file == $match ];then #判断
-
使用shell脚本每天对MySQL多个数据库自动备份的讲解
Linux下使用shell脚本,结合crontab,定时备份MySQL下多个数据库,每次备份的数据存放于以日期命名的文件夹中,同时删除超过设定的备份保留时间的数据. 以下例子设定备份保留时间为1个月(-1month),可根据需求修改 #! /bin/bash # MySQL用户 user="root" # MySQL密码 userPWD="123456" # 需要定时备份的数据表列表 dbNames=(db_test1 db_test2 db_test3 db_te
-
Java调用shell脚本解决传参和权限问题的方法
1. java 执行shell java 通过 Runtime.getRuntime().exec() 方法执行 shell 的命令或 脚本,exec()方法的参数可以是脚本的路径也可以是直接的 shell命令 代码如下(此代码是存在问题的.完整代码请看2): /** * 执行shell * @param execCmd 使用命令 或 脚本标志位 * @param para 传入参数 */ private static void execShell(boolean execCmd, String
-
Shell脚本判断用户的输入内容
1.脚本功能:提示客户属于一串数字,并判断用户是否进行了输入,输入的是否为数字 #!/bin/bash read -p "enter a number: " number #提示用户输入数字 if [ -z $number ];then #判断用户是否输入,如果未输入则打印error echo "Error" exit else jieguo=`echo "$number*1" | bc ` #把用户的输入值和1相乘,交给bc做运算 if [ $
-
Shell脚本从文件中逐行读取内容的几种方法实例
从文件逐行读取数据的方法有两种,一种是在while循环或until循环中使用read命令,通过文件描述符一行一行的读取文件内容:另一种是在for循环中使用cat <filename>来读取文件的内容. 1.使用for循环从文件中逐行读取内容:在默认情况现下此方法是逐个单词的读取文件内容,因为使用这种方法读取文件时,他使用环境变量IFS的值作为分隔符,由于IFS的默认值是"<space/空格>""<tab/制表符>""&l
-
Shell脚本中使用getopts处理多命令行选项
在Linux系统中,许多命令都提供了选项,使用不同的选项就会得到不通的执行结果 例如:ls命令,ls命令提供了多个选项:-l.-a.-A.-h.-i等等,每个选项具有不同的功能,我们自己写脚本时也可以定义选项,提示用户如何使用,本文介绍如何使用getopts命令来处理命令选项. 1.getopts命令的如何使用: 用getopts命令获取到脚本选项后,getopts会将获取到的选项所对应的参数(选项对应的参数,并不是选项本身,有的命令选项后面是需要跟一个参数的,例如tcpdump 的-w选项,后
-
shell脚本批量删除es索引的方法
发现elasticsearch集群的状态是red,unassign的分片数很多,看了下都是些旧的日期的索引(应该是定时任务删除失败导致的). curl -XGET ip:port/_cat/shards | grep UNASSIGNED 数量有几百个,写个脚本处理下,先恢复成green.red状态好像会影响索引创建和数据迁移 先把需要删除的索引导出到文件 curl -XGET ip:port/_cat/shards | grep UNASSIGNED >> needDelIndex.txt
-
shell脚本操作mysql数据库删除重复的数据
由于之前的业务,造成数据库上产生了脏数据,写个脚本删除重复的数据.由于是开发测试环境,所以选择任意删除相同uid中的一条.由于每次执行只删除重复数据的一条,需要重复执行,如果本轮没有数据被删就OK #!/bin/sh # delete all company's duplicate uid MYSQL_BIN_PATH=/data/mysql/server/mysql_3306/bin MYSQL_SOCK_PATH=/data/mysql/server/mysql_3306/tmp DBUSE
-
springboot打包不同环境配置以及shell脚本部署的方法
前言 本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作: profiles指定不同环境的配置 maven-assembly-plugin打发布压缩包 分享shenniu_publish.sh程序启动工具 linux上使用shenniu_publish.sh启动程序 profiles指定不同环境的配置 通常一套程序分为了很多个部署环境:开发,测试,uat,线上 等,我们要想对这些环境区分配置文件,可以通过两种方式: 通过a
随机推荐
- java 学习笔记(入门篇)_java的安装与配置
- 解析javascript图片懒加载与预加载的分析总结
- python装饰器与递归算法详解
- bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
- PowerShell中读取多行文本示例
- C#中方括号[]的语法及作用介绍
- jquery中JSON的解析方式
- C#程序提示“正由另一进程使用,因此该进程无法访问该文件”的解决办法
- 用php实现选择排序的解决方法
- 问题收集帖动网论坛完整程序包下载地址(包含所有补丁)
- Unity5.6大规模地形资源创建方法
- Spring boot按日切分spring boot的nohup.out日志文件的方法
- 基于树莓派的语音对话机器人
- pycharm new project变成灰色的解决方法
- 解决vuex数据异步造成初始化的时候没值报错问题
- Android 拍照选择图片并上传功能的实现思路(包含权限动态获取)
- PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
- 微信小程序连接服务器展示MQTT数据信息的实现
- 详解c# 中的DateTime
- vue 实现根据data中的属性值来设置不同的样式