shell编程题(九)

文本分析,取出/etc/password中shell出现的次数

答案1:

cat /etc/passwd | awk -F: ‘{if ($7!="") print $7}‘ | sort | uniq -c

/etc/passwd 中的数据是以:隔开的

sort是将文件中的每一行作为一个单位,互相比较。

比较的原则是从首字母向后,依次按照ASCII码值进行比较,最后将它们按照升序输出。

参数:

    • -u 去除重复行
    • -r 降序输出
    • -o 输入到原文件 (重定向只能输入到新文件)
    • -n 按数值排序
    • -t 后面可以设定间隔符 -k 指定列数。
    • -f 忽略大小写排序
    • -c 检查文件是否已排好序,如果乱序输出第一个乱序的行,最后返回1
    • -C 同上,不输出内存,仅返回1
    • -M 按照月份排序
    • -b 会忽略掉每一行前面的所有空白字符

uniq 检查及删除文本文件中重复出现的行列,一般与sort命令结合使用

uniq可检查文本文件中重复出现的行列

uniq [-c/d/D/u/i] [-f Fields] [-s N] [-w N] [InFile] [OutFile]

参数:

    • -c: 在每列旁边显示该行重复出现的次数。
    • -d: 仅显示重复出现的行列,显示一行。
    • -D: 显示所有重复出现的行列,有几行显示几行。
    • -u: 仅显示出一次的行列
    • -i: 忽略大小写字符的不同
    • -f Fields: 忽略比较指定的列数。
    • -s N: 忽略比较前面的N个字符。
    • -w N: 对每行第N个字符以后的内容不作比较。
    • [InFile]: 指定已排序好的文本文件。如果不指定此项,则从标准读取数据;
    • [OutFile]: 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。

答案2:

cat /etc/passwd | awk -F: ‘{if ($7!="") print $7}‘ | sort | uniq -c | awk ‘{print $2,$1}‘

原文地址:https://www.cnblogs.com/wanghao-boke/p/12122042.html

时间: 2024-10-03 14:57:00

shell编程题(九)的相关文章

嵌入式考试Shell编程题

单片机与嵌入式系统考试Shell编程题库,简单地做了下. 9. 与题7类似,多了个乘法运算. #!/bin/bash # test1.sh # 2016.1.2 echo "Please input N student grade:" read -a grade for ((i=0;i<${#grade[@]};i++)) do if [[ ${grade[i]} -ge 90 ]] then grade[i]=5 elif [[ ${grade[i]} -ge 80 ]] th

Linux学习笔记——Shell编程(九)

+++++++++++++++++++++++++ +++++Shell编程+++++++++++++++++++++++++++++++ 1. 基础正则表达式 正则表达式与通配符: 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配,grep awk sed等命令可以支持正则表达式:通配符是用来匹配符合条件的文件名,通配符是完全匹配,ls find cp这些命令不支持正则表达式,所以只能用shell自己的通配符来匹配. 基础正则表达式: 2. 字符截取命令 字段提取命令:cut [选项

shell编程题(十九)

题目: 设计一个Shell程序,在/userdata目录下建立50个目录,即user1-user50,并设置每个目录的权限,其中其他用户的权限为:读:文件所有者的权限为:读.写.执行:文件所有者所在组的权限为:读.执行. 答案: #!/bin/bash mkdir ./userdata if [ $? -eq 0 ]; then i=1 while [ $i -le 50 ]; do mkdir -p ./userdata/user$i chmod 754 ./userdata/user$i l

shell编程题(二十九)

题目: 用tcpdump嗅探80端口的访问 答案: sudo tcpdump -i ens33 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | head -n20 解析: tcpdump -i interface:指定tcpdump需要监听的接口.默认会抓取第一个网络接口 -n:对地址以

shell编程(九)算术运算

bash脚本编程之算术运算 +,-,*,/,  **, % 算术运算格式: (1) let  VAR=算术运算表达式 (2) VAR=$[算术运算表达式] (3) VAR=$((算术运算表达式)) (4) VAR=$(expr $ARG1 $OP $ARG2) 注意:乘法符号在有些场景中需要使用转义符: 练习:写一个脚本,完成如下功能: 添加三个用户: 求此三个用户的UID之和:

小鸟初学Shell编程(九)环境变量变量配置文件

介绍 在上一篇使用完了环境变量,并且知道PATH环境变量概念,那么我们对命令的执行就有了一定深入的理解.那么PATH环境变量或其他环境变量是保存在哪呢?那么这篇文章主要介绍环境变量配置文件. 配置文件 环境变量主要保存在以下四个文件和一个目录中: /etc/profile /etc/profile.d/ ~/.bash_profile ~/.bashrc /etc/bashrc 保存在/etc/目录下的配置文件,都是所有用户通用的配置,就是不管是root用户还是普通用户. 保存在~/用户家目录的

shell编程题(十三)

题目: 编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下. 答案: #!/bin/bash for FileName in `ls -l | awk '$5>10240 {print $9}'`; do mv $FileName /tmp done ls -al /tmp 原文地址:https://www.cnblogs.com/wanghao-boke/p/12152199.html

shell编程题(五十一)

题目: 显示当前系统上所有用户的shell,要求,每种shell只显示一次: 答案: cut -d: -f7 /etc/passwd | sort -u 原文地址:https://www.cnblogs.com/wanghao-boke/p/12289991.html

运维笔试Shell编程题

一.实现批量添加10个用户,用户名为user01-10,密码为user后面跟3个随机字符: #!/bin/bash for i in `seq -w 1 10` do user="user$i" password=$(cat /dev/urandom | head -1 | md5sum | head -c 3) useradd user$i echo "$user$password" | passwd --stdin $user echo "$user$