标签:200 log 查看 一行 cat 命令 temp Linux
原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。
简介
当年,我还是Linux菜鸟的时候,就在简历上写着精通Linux命令了,而当面试官问我“如何快速查看某个文件的第200行,仅这一行”
时,我的心里是懵逼的。
当时面试官心里估计在窃喜,从我敷衍的回答中,他应该已经完全了解到了我的Linux水平如何[-_-]
不过,不得不说,这是一道非常好的面试题,对于一些只知道cd ls cp rm
基础命令的人来说,完全回答不了,而对于真正熟悉Linux人来说,答案信手拈来,下面来看看。
1. 如果知道cat加-n可以输出行号的话:
cat -n temp.log | grep -w '^\s*200'
是的,每行前面加个行号,然后grep过滤一下就出来了。
2. 如果稍微了解过sed命令的话:
cat temp.log | sed -n '200p'
sed命令能直接用行号匹配,匹配到的行用p指令输出就行了。
3. 如果稍微了解过awk命令的话:
cat temp.log | awk 'NR==200'
这个和sed命令类似,不过NR代表行号。
4. 如果你比较幸运,学过一点perl的话:
cat temp.log|perl -lne 'print $_ if $.==200'
和awk是类似的,不过语法不同罢了。
5. 如果了解head,tail,脑袋转得再快一点的话:
cat temp.log | head -n 200 | tail -n1
是的,先取前200行,再用tail取最后一行就可以了,这么简单咋当时想不到呢!
6. 如果知道cut,思路再转个弯的话:
cat temp.log | cut -z -d $'\n' -f200
cat temp.log | awk -F '\n' -v RS='\0' '{print $200}'
嗯,把整个文件内容当成一条记录,把换行符当成列分隔符,取第200列就好了嘛。
7. 如果你在想xargs行不行的话:
cat temp.log | xargs -d'\n' bash -c 'echo $200' -
和上面是类似的,不过这次使用xargs把所有行变成了bash命令的参数,然后打印第200个参数即可。
注:上面没有详细解释各个命令的用法,如果想了解这些命令,可以看看我之前写的两篇文章。
原来awk真是神器啊
Linux文本命令技巧(上)
总结
是的,使用Linux命令,实现一个功能,可以有很多种解法,它和普通的编程思维很不一样,只要不把思考方式限定在编程实现上,渐渐地解法都会像灵感一样,从你大脑中蹦出来。
往期内容
原来awk真是神器啊
Linux文本命令技巧(上)
Linux文本命令技巧(下)
mysql的timestamp会存在时区问题?
hex,base64,urlencode编码方案对比
字符编码解惑
标签:200,log,查看,一行,cat,命令,temp,Linux 来源: https://www.cnblogs.com/codelogs/p/16060367.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。