Linux趣事 -- (1)shell脚本

本文是用shell脚本解决三道题目,分别为:
(1)将/etc/passwd的第一列(用户名)取出,以”the n account is $usr”显示每一个用户名。n表示行数,其中,/etc/passwd以”:”作为分隔符。
(2)找出文件sample.txt中单词”Linux” 出现的次数。
(3)在当前目录下有一个文本文件test.txt,每隔一行就有一行乱码。如何做到隔行删除?

第一题(三种解法)

解法一:
#!/bin/bash   
echo "$(awk -F ":" '{print "The " NR " account is " $1}' /etc/passwd)"

注意点:
(1)http://xpleaf.blog.51cto.com/9315560/1678565
(2)http://www.linuxidc.com/Linux/2013-01/77225.htm

解法二:
#!/bin/bash
row=`cat /etc/passwd | wc -l`
for i in `seq 1 $row`
do
    user=`sed -n "$i"p /etc/passwd | awk -F ':' '{print $1}'`
    echo "This $i account is "$user""
done

注意点:
(1)键盘第二排第一个键 `
(2)有两处是数字 1 , 分别为seq处和print处。
(3)http://blog.csdn.net/wjplearning/article/details/77981715

解法三:
#!/bin/bash
accounts=`cat /etc/passwd | cut -d':' -f1`
for account in $accounts
do
    declare -i i=$i+1
    echo "The $i account is \"$account\""
done

注意点:
(1)http://www.runoob.com/linux/linux-comm-declare.html
(2)http://blog.csdn.net/tangy110/article/details/6278259
(3)http://blog.csdn.net/qianqin_2014/article/details/52200172
(4)http://3y.uu456.com/bp_8x8pd7x9bt0wekt4q3cr_3.html

第二题

#!/bin/bash                                                                                                                     
grep -o "Linux" sample.txt | wc -l

注意点:
(1)http://www.linuxidc.com/Linux/2013-01/77225.htm

第三题(奇偶解法)

删除奇数行
#!/bin/bash
awk 'NR % 2==0' test.txt
或 sed '1~2d' test.txt
删除偶数行
#!/bin/bash
awk 'NR%2==1' test.txt
或 sed '1~2!d' test.txt

注意点:
(1)http://blog.csdn.net/mengxianhua/article/details/22732677
(2)http://www.kuqin.com/article/24shell/15807.html
(3)http://blog.csdn.net/mengxianhua/article/details/22732677

注:注意点里还有些其它的写法,可以去看一看。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值