老男孩教育每日一题-第61天-使用命令调换 /etc/passwd 文件里所有的第一列和最后一列位置
2017-06-13 11:02
495 查看
老男孩教育每日一题-第61天-使用命令调换 /etc/passwd 文件里 root 位置和/bin/bash 位置?即将所有的第一列和最后一列位置调换?例:默认:
发现分隔符变成了空格,再使用tr 把分隔符替换成冒号
今天是每日一题陪伴大家的第60天,期待你的进步。对于题目和答案的任何疑问,请在博客评论区留言。
往期题目索引http://lidao.blog.51cto.com/3388056/1914205
root:x:0:0:root:/root:/bin/bash修改后:
/bin/bash:x:0:0:root:/root:root
参考答案:
方法1:每列之前由冒号分隔,首先想到awk擅长取列,所以第一种方法使用awk,分隔符冒号
具体方法:每行分3组,第一组字母、数字、下划线、- 组成,第二组第一个冒号到最后一个冒号,第三组是斜 线(/)到最后,以下给出两个参考发现分隔符变成了空格,再使用tr 把分隔符替换成冒号
root@oldboy36 ~ /bin/bash:x:0:0:root:/root:root /sbin/nologin:x:1:1:bin:/bin:bin /sbin/nologin:x:2:2:daemon:/sbin:daemon /sbin/nologin:x:3:4:adm:/var/adm:adm /sbin/nologin:x:4:7:lp:/var/spool/lpd:lp /bin/sync:x:5:0:sync:/sbin:sync /sbin/shutdown:x:6:0:shutdown:/sbin:shutdown /sbin/halt:x:7:0:halt:/sbin:halt /sbin/nologin:x:8:12:mail:/var/spool/mail:mail ...... 这样就完成题目要求了为了省略 $2,$3,...$6这些内容,我们可以直接把第一列和最后一列交换,这里需要用到自定义变量,得出下 面一个方法
awk -F ":" '{a=$1;$1=$NF;$NF=a;print}' /etc/passwd|tr " " ":"继续优化以上方法,使用awk内置变量OFS(输出分隔符),设置输出分隔符为冒号
awk -F ":" '{OFS=":";a=$1;$1=$NF;$NF=a;print}' /etc/passwd
方法2:使用sed命令,对每行进行分组正则匹配,然后后向引用输出
具体方法:每行分3组,第一组字母、数字、下划线、- 组成,第二组第一个冒号到最后一个冒号,第三组是斜 线(/)到最后,以下给出两个参考sed -r 's#(^[a-Z0-9_-]+)(:.*:)(/.*$)#\3\2\1#' /etc/passwd sed -r 's#(^[^:]+)(:.*:)(/.*$)#\3\2\1#' /etc/passwd
今天是每日一题陪伴大家的第60天,期待你的进步。对于题目和答案的任何疑问,请在博客评论区留言。
往期题目索引http://lidao.blog.51cto.com/3388056/1914205
相关文章推荐
- 1.1 使用命令调换 passwd 文件里 root 位置和/bin/bash 位置? 即将所有的第一列和最后一列位置调换?
- 使用命令将/etc/passwd第一列和最后一列交换位置
- 老男孩教育每日一题-124天:当我们使用ssh-keygen命令的时候,如何一键非交互生产密钥对呢?
- 老男孩教育每日一题-第65天-编写脚本,取出/tmp目录下面的所有文件的第一行
- 老男孩教育每日一题-2017年5月4日-有一个oldboy.txt文件,把里面所有字母都转换成大写
- 老男孩教育每日一题-2017-04-21-命令风暴--查看你的Linux系统的文件系统类型?
- 老男孩教育每日一题-2017年4月5日-统计你的linux系统的history历史记录,得出你最喜欢使用的前10个命令
- 老男孩教育每日一题-第62天-统计/var/log/下所有文件个数
- /etc/sudoers文件设置为允许用户在不输入该用户的密码的情况下使用所有命令
- 老男孩教育每日一题-2017-04-18:命令风暴:如何快速删除Linux中海量小文件?
- 老男孩教育每日一题-第102天-如何找出/usr/local 下面所有shell脚本文件,并设置执行权限?
- 老男孩教育每日一题-第112天-下面这个scp命令使用有什么问题?
- 老男孩教育每日一题-2017年5月19日-使用find命令的时候 |xargs(管道xargs)与-exec有什么区别?
- awk命令之 - 统计/etc/passwd文件中各用户所使用的shell类型及出现次数
- 老男孩教育每日一题-2017年5月2日-Linux系统中,不小心把chmod命令的权限弄没了,怎么解决?
- 老男孩教育每日一题:2017年3月8日-如何添加一条路由-route路由实战使用案例
- 老男孩教育每日一题-2017年3月20日:使用rsync守护进程模式,经常会出现的异常情况说明,并说明应该如何解决
- linux显示文件列表命令ls,使用ls --help列出所有命令参数
- 我使用过的Linux命令之mv - 文件或目录改名、移动位置
- 老男孩教育每日一题-2017年3月29日-使用ifconfig取出网卡eth0的ip地址-看看你有多少方法