seq命令,tr命令,sort命令,cut命令
来源:互联网 发布:淘宝直播开蚌是真的吗 编辑:程序博客网 时间:2024/05/22 00:07
seq命令
用途:打印出一串有序的数字
格式:seq [选项] 数字范围
- -s:指定分隔符
- -w:指定同等带宽输出
-
eg:
# seq 1 2 1013579
数组和seq命令的应用
eg:选择双色球
要求写脚本实现如下图所示的功能。
答案:
#!/bin/bashecho "欢迎购买福彩双色球,按任意键机选一注"redball=($(seq 32))echo -e "\033[31m红球:\n$(echo ${redball[@]})\033[0m"blueball=($(seq 16))echo -e "\033[34m蓝球:\n$(echo ${blueball[@]})\033[0m"blen=${#blueball[@]}for i in $(seq 6)dorlen=${#redball[@]}rnum=$((RANDOM % rlen))rb[x++]=${redball[rnum]}unset redball[rnum]redball=(${redball[@]})donebnum=$((RANDOM % blen))bb=${blueball[bnum]}read -n1 -secho -e "你的幸运号码是:******** \033[31m红球:${rb[@]}\033[0m \033[34m蓝球:$bb\033[0m ********"
tr命令
字符转换工具,只能对stdin操作,不能直接对文件操作。
使用tr转换字符:
格式:tr set1 set2
- 用set2中的字符替换掉set1中同一位置的字符(并没动源文件)
#echo 123456|tr 345 abc#tr 123 abc < aa#tr '[a-z]' '[A-Z]' < /etc/hosts#echo $PATH | tr ':' '\n'
- 删除字符 -d
- 格式:tr -d set
- 将stdin中数据流删除与set相同的字符
#echo 123456 | tr -d 345 #df -h | tr -d %
- 压缩字符 -s
- 格式:tr -s SET
- 将连续相同的字符压缩成一个字符
例子:
# echo 112233444555666 | tr -s 345# ifconfig | tr -s ' '
格式:tr -s SET1 SET2
先替换为SET2再压缩
# echo 112233444555666 | tr -s 345 abc# who | tr -s ‘ ‘ ‘\n’
sort 排序命令
默认按每行的第一个字符排序。
- -n:按整数进行排序
- -r:递减排序
- -k:指定哪一列为排序键
- #cat tt | sort -n -k4
- -t:指定字段分割符(默认是空格)
- #sort -t: -n -k3 /etc/passwd
uniq去重命令
删除经过排序后的数据的重复记录 ,通常和sort连用。例:
#sort -n tt | uniq
- 数据的实例统计
-c:统计特定记录出现的次数
#cat tt | uniq -c
- -u:只显示唯一的行
#cat tt | uniq –u
- -d:只显示重复的行
#cat tt | uniq -d
cut 提取命令
从文本文件或者文本流中提取文本列。
格式:cut -选项 提取范围 文本文件
- -c:从指定提取范围中提取字符
#ls -l | cut -c10#who | cut -c 20-40#cut -c -10 /etc/passwd
- -f:从指定提取范围中提取字段
- -d:指定分隔符。默认是Tab
#cut -d “:” -f 1,7 /etc/passwd#who | cut -d ' ' -f1,6
- 提取范围:
- n:第n项
- n-:第n项到行尾
- -m:行首到第m项
- n,m:第n项和第m项
- n-m:第n项到第m项
数组的用法–补充
利用循环为数组赋值:
#vi gate.sh#!/bin/bashfor i in tom jerry lee mikedonames[x++]=$i;doneecho ${names[@]}
([x++]可以直接用,不用事先定义)
练习:
1.截取出本机上所有网卡的ip地址和子网掩码、默认网关
2.格式如下:
eth0 ip adreess is 172.16.1.1/16
eth1 ip adreess is 173.168.1.1/16
default gateway is 173.168.20.20
dns servers are 114.114.114.114 219.146.1.66
得到eth0和eth1的名字:# ip add|grep "mtu"|awk '{print $2}'|tr -d :得到eth0的ip地址:#ifconfig eth0|grep "inet addr"|tr -s ':' ' '|cut -d' ' -f4得到eth1的ip地址:#ifconfig eth1|grep "inet addr"|tr -s ':' ' '|cut -d' ' -f4 得到默认网关:# route -n|grep "^192"|awk '{print $2}'获得DNS:# cat /etc/resolv.conf |grep " DNS1"|tr = ' '|awk '{print $3}'或# cat /etc/resolv.conf |grep " DNS1"|tr = ' '|cut -d ' ' -f3
练习 :
1.只显示/boot目录下所有对象的实际空间,并按由小到大排序
2.统计/etc/passwd中每种shell的被使用次数
3.用fdisk -l命令只显示出分区和文件系统的类型
4.统计/etc/passwd文件中sbin这个单词出现多少次
5.用find命令查找/根目录下所有包含特殊权限的对象,并只显示出对象的权限和文件名称,不能显示错误提示
6.列出前5位占MEM最多的进程的命令
7.只显示网卡eth0的IP地址
答案:
①find /boot –exec ls -l {} \; | tr -s ' ' | cut -d' ' -f5 | grep -v ^$ | sort –n②cat /etc/passwd | cut -d: -f7 | sort | tail -n +2 | uniq -c③fdisk -l | grep ^/dev | tr -s '*' ' ' | cut -d' ' -f1,6-④cat /etc/passwd | tr -s ':/ ' '\n' | sort | uniq -c | grep sbin⑤find / -perm +7000 -exec ls -ld {} \; 2>/dev/null |tr -s ' ' | cut -d' ' -f1,9 | cut -c 2-10,12-⑥ps aux | tr -s ' ' | tail -n +2 | sort -k4 -rn | head -5⑦ifconfig eth0 | grep "inet addr" | tr -s ':' ' ' |cut -d' ' -f4
练习:
编写脚本统计指定目录下面文件占用空间大小超过10M的文件的数目和大小总和 (使用1个位置参数指定目录的绝对路径)
答案:
#!/bin/bashall=$(find $1 -size +10240k -type f -exec ls -l {} \; 2> /dev/null | cut -d ' ' -f5 |tr '\n' '+')num=$(find $1 -size +10240k -type f -exec ls -l {} \; 2> /dev/null |wc -l )((size=(${all}0)/1024/1024))echo "超过10M的文件数目: $num"echo "这些文件的总大小是: ${size}M“j=0for i in $(find $1 -type f | xargs du 2> /dev/null | cut -f1)do (($i>10240)) && ((sum=sum+i)) && ((j++))doneecho 大于10M的文件是:$jecho 所有文件的总大小是:$((sum/1024))M
练习:
把/etc/passwd下面的所有用户截取出来放在一个数组里。
答案:
# user_name=($(cat /etc/passwd|awk -F: '{print $1}'))# echo ${user_name[@]}
关联数组
(我认为:关联数组即可以自定义下标的特殊数组)
#declare -A name#name=([user]=aa [pwd]=bb [age]=cc)#echo ${name[@]} --》显示数组全部元素bb aa cc# echo ${#name[@]} --》显示数组元素个数3# echo ${!name[@]} --》显示数组下标pwd user age# echo ${name[user]} --》显示下标为user的数组元素是啥aa
- seq命令,tr命令,sort命令,cut命令
- cut+join+sort命令
- sort cut 等命令
- 几个linux常用的命令 sort,cut, uniq, split, tr
- 文本操作(1)——cut,tr,sort,uniq命令
- seq命令
- seq 命令
- seq命令
- seq 命令
- seq 命令
- seq命令
- sort uniq cut wc命令
- tr命令
- tr命令
- tr命令
- tr命令
- tr命令
- tr命令
- 使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- lesson24 if语句嵌套
- for循环的几种写法
- C模拟打开浏览器百度搜索词条单击结束浏览器进程
- nutch2.x在eclipse+windows环境下运行遇到的一些问题的解决方案
- seq命令,tr命令,sort命令,cut命令
- 半夜二更
- 8、自定义动画--动画篇
- Ancient Cipher
- C语言函数和主函数的调用
- 关于线性移位寄存器和快速相关攻击中的算法A和算法B详细分析解答
- linux INIT_WORK 创建工作队列
- Java(4-3)
- matlab imfilter