面试常见的Linux文本处理命令整理
前言
Linux平台下处理数据有几个常见的命令(awk,sed,cut,sort),也是数据开发,数据分析,数据处理等各种面试笔试经常会问道的一个点,本文对其做一个经验性的总结。AWK
在面试中遇到的两个题目:
1.用一句shell命令取出本机的ip地址(很久没用linux的后台,当时完全没想到awk和sed)
思路:用ifconfig或者ip addr 打印出ip地址相关信息,然后对整体打印的信息做一些数据 处理操作(sed,cut,awk),只取IP地址,这里仅提供ifconfig方式提取
(1) ifconfig eth0
(2)ifconfig eth0 | sed -n ‘2p’ (取打印出来的信息的第二行)
sed -n 2p,这里也可以用head -n 2 | tail -n 1(显得有些low)
或者ifconfig eth0 | grep ‘inet addr’(根据关键字符串查找)
(3)ifconfig eth0 | sed -n ‘2p’ | awk ‘{print $2}’ (根据空格分列,取第二列)
然后根据":"分隔取第二列
步骤(2)里面或者方法同样试用如此操作。
当然这里也可以先根据":"分隔,再根据空格分隔来取
熟悉awk的NF和NR用法,也可以直接用awk的NR取第二行(默认已经根据空格分隔取第二列,可以和NR在一条命令里面完成),再根据":"分隔取第二列
这里稍微拓展一下AWK的NF和NR命令:
NF:支持记录域个数,在记录被读之后再设置(配合-F参数,根据指定字符分隔列)
NR:已经读取的记录数
到这里就想到了我最开始接触的那个awk命令,大概用法
awk -F ‘,’ ‘{print NR,NF}’ dept.csv
快速定位数据文件在哪一行出现了特殊字符导致异常换行
即:找出域不相同的行
熟悉awk和sed还可以有很多组合来处理文本,这里还可以使用cut截取,多种方法处理参考链接:https://blog.51cto.com/12564489/1910071
2.根据已知的Oracle的配置文件,取出用户名和密码
配置文件内容如下:
方法一先cat读取文件,然后awk根据"="分隔,取第二列,最后根据需要,用户名取第二行,密码取第三行
方法二我们这里也可以用上面提到的low办法,用head和tail组合的方式确定行
方法三用高级方法awk的NR方法来指定行
用户名:cat /home/hjj/orapasswd.txt | awk -F ‘=’ ‘NR==2{print $2}’
密码:cat /home/hjj/orapasswd.txt | awk -F ‘=’ ‘NR==3{print $2}’
总结
时间有限,只能做成一个小的系列来整理了
参考博文:https://blog.51cto.com/12564489/1910071
https://www.cnblogs.com/kerrycode/p/4581030.html