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 是按照第几列排序。