shell编程题(十)

有两个文件如下所示:

employee.txt 

100 Jason Smith

200 John Doe

300 Sanjay Gupta

400 Ashok Sharma

bonus.txt

100 $5,000

200 $500

300 $3,000

400 $1,250

employee.txt记录的是工号和姓名,bonus记录的是工号和工资

将以上两个文件合并并输入为以下格式:

400 ashok sharma $1,250

100 jason smith  $5,000

200 john doe  $500

300 sanjay gupta  $3,000

答案:

join employee.txt bonus.txt | tr A-Z a-z | sort -k2

解析:

join employee.txt bonus.txt

join 命令:

功能:将两个文件里指定栏位同样的行链接起来。

join [options] file1 file2

注:这两个文件必须在已经在此列上是依照同样的规则进行了排序。

options:

-a<1或2> :除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。

-e<字符串> :若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。

-i或--igore-case :比较栏位内容时,忽略大小写的差异。

-o<格式> :按照指定的格式来显示结果。

-t<字符> :使用栏位的分隔字符。

-v<1或2> :跟-a相同,但是只显示文件中没有相同栏位的行。

-1<栏位> : 连接[文件1]指定的栏位。

-2<栏位> : 连接[文件2]指定的栏位。

tr A-Z a-z

tr命令用于转换或删除文件中的字符。

将所有的大写字符转换成小写字符。

sort -k2

-k 是按照第几列排序。

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

时间: 2024-10-12 15:13:40

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

shell编程(十二)--- 添加用户示例

[[email protected] Learn]# cat useradd-final.sh  #!/bin/bash # DEBUG=0 ADD=0 DEL=0 help() { echo "Usage: $(basename $0) -v | --verbose | --add user1,user2,... | --del user1,user2,... | -h | --help" } while [ $# -ne 0 ] do case $1 in -h | --help 

shell编程(十四)--- until循环

until循环语法格式: until CONDITION do     statement done 说明: until进入循环的条件是:condition不成立时,就执行循环. until进入循环的条件正好和while相反,while进入循环的条件是:condition成立时,就进入循环. 示例1:while循环 [[email protected] Learn]# cat while.sh  #!/bin/bash declare -i sum=0 declare -i i=0 while 

shell编程(十五)--- while特殊用法和函数

break:退出循环体 continue:结束本次循环,进入下一次循环. while特殊用法1: while : do done 上述为while的死循环. while特殊用法2: while read LINE do done < /path/to/FILE 作用:通过while读取FILE文件中的每一行,并将其保存在变量LINE中. 函数:function 语法格式: 方法1: function FUNCTIONNAME {     COMMAND } 方法2: FUNCTIONNAME()

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编程题(十五)

题目: 文件移动拷贝,有m1.txt m2.txt m3.txt m4.txt,分别创建出对应的目录,m1 m2 m3 m4 并把文件移动到对应的目录下. 答案: #!/bin/bash touch m1.txt m2.txt m3.txt m4.txt I=1 while [ $I -le 4 ]; do mkdir m$I mv m$I.txt m$I I=$((I+1)) done 原文地址:https://www.cnblogs.com/wanghao-boke/p/12149042.h

shell编程题(二十八)

题目: 查找请求数前20个IP(常用于查找攻来源) 答案: #! /bin/bash echo "The numbers of IP address" echo "the first way:" netstat -anlp | grep 80 | grep tcp | awk '{print $5}' | awk -F: '{print $1}' | uniq -c | sort -nr | head -n20 echo "the second way:&

shell编程题(三十)

题目: 获取前10个time_wait连接最多的IP地址 答案: netstat -n | grep TIME_WAIT | awk '{print $5}' | uniq -c | sort -nr | head -n10 原文地址:https://www.cnblogs.com/wanghao-boke/p/12268143.html

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:对地址以