原创:打码日记(微信公众号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编码方案对比
字符编码解惑

作者:打码日记

出处:https://www.cnblogs.com/codelogs/p/16060367.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

[转帖]使用Linux命令快速查看某一行的更多相关文章

  1. 如何使用Linux 命令more 查看文本文件

    Linux 下有很多实用工具可以让你在终端界面查看文本文件.其中一个就是 more. more 跟我之前另一篇文章里写到的工具 —— less 很相似.它们之间的主要不同点在于 more 只允许你向前 ...

  2. 转载:Linux命令之查看文件占用空间大小-du,df

    转载自:<du命令>-linux命令五分钟系列之三 du(disk usage),顾名思义,查看目录/文件占用空间大小 #查看当前目录下的所有目录以及子目录的大小$ du -h $ du ...

  3. Linux命令文件查看过滤

    Linux命令篇 1.查看一个文件的后100行的命令: tail -n 100 Linux下查看文件前几行一般用head -n xx,查看后面几行用tail -n xx.除此之外,还有: tail - ...

  4. 【linux】linux命令--uptime查看机器存活多久和平均负载 解读平均负载含义

    一.uptime命令,查看机器存活时间和平均负载 键入命令: uptime 该结果和 top命令查看结果最上面一行的 是一样的显示. 返回数据介绍: #当前服务器时间: 19:56:44 #当前服务器 ...

  5. Linux 命令 - man 查看命令的文档

    man 命令是 Linux 中最常用的命令,碰到任何让你疑惑的命令,都可以 man 一下来查看详情.不只是 shell 命令,C 语言库函数和系统调用等内容也可以通过 man 命令查看. man 命令 ...

  6. 【转帖】Linux命令行操作json神器jq

    Linux命令行操作json神器jq https://www.cnblogs.com/chenqionghe/p/11736942.html jq类似一个awk或grep一样的神器,可以方便地在命令行 ...

  7. 如何使用Linux命令行查看Linux服务器内存使用情况?

    一个服务器,最重要的资源之一就是内存,内存够不够用,是直接关系到系统性能的关键所在. 本文介绍如何查看Linux服务器内存使用情况, 1.free命令 free -m [root@localhost ...

  8. Linux命令(1) - 查看内存使用情况: free -hm

    使用"free -hm"命令查看linux服务器的内存使用状况,其中-h表示人性化显示,-m表示将内存显示为M:

  9. Linux命令之查看文件夹、文件数量及其所占磁盘空间

    一.查看数量 # 查看当前目录下的文件数量(不包含子目录中的文件) ls -l|grep "^-"| wc -l # 查看当前目录下的文件数量(包含子目录中的文件) 注意:R,代表 ...

  10. linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用

    lsof命令是什么? 可以列出被进程所打开的文件的信息.被打开的文件可以是 1.普通的文件,2.目录  3.网络文件系统的文件,4.字符设备文件  5.(函数)共享库  6.管道,命名管道 7.符号链 ...

随机推荐

  1. 神经网络基础篇:详解logistic 损失函数(Explanation of logistic regression cost function)

    详解 logistic 损失函数 在本篇博客中,将给出一个简洁的证明来说明逻辑回归的损失函数为什么是这种形式. 回想一下,在逻辑回归中,需要预测的结果\(\hat{y}\),可以表示为\(\hat{y ...

  2. 实时入库不用愁,HStore帮分忧

    本文分享自华为云社区<直播回顾 | 实时入库不用愁,HStore帮分忧>,作者:汀丶. 海量数据时代,如何实现数据实时入库与实时查询?GaussDB(DWS) HStore表为数据高效存储 ...

  3. RT-DETR:可以满足实时性要求的DETR模型

    本文分享自华为云社区<高性能网络设计秘笈:深入剖析Linux网络IO与epoll>,作者: Lion Long . 一.epoll简介 epoll是Linux内核中一种可扩展的IO事件处理 ...

  4. Ambient Mesh:Istio 数据面新模式

    摘要:基于Istio对于Kubernetes生态的完美补充,随着Kubernetes的大规模普及,Istio 数据面新模式 -Ambient MeshIstio也实现了对用户心智以及市场的快速抢占. ...

  5. Tarjan:这个算法大神

    摘要:图的算法是进行静态分析的基础数据算法,如何提高图的分析效率,就需要对图的算法有进一步的认识. 1. 引言 在静态分析技术中, 我们常用会将代码转成抽象语法树(AST), 然后采用深度遍历(DFS ...

  6. 教你如何在Python中读,写和解析CSV文

    摘要:在这篇文章中关于"在Python如何阅读CSV文件"中,我们将学习如何读,写和解析的CSV文件的Python. 您知道将表格数据存储到纯文本文件背后的机制是什么吗?答案是CS ...

  7. 认识一下MRS里的“中间人”Alluxio

    摘要:Alluxio在mrs的数据处理生态中处于计算和存储之间,为上层spark.presto.mapredue.hive计算框架提供了数据抽象层,计算框架可以通过统一的客户端api和全局命名空间访问 ...

  8. that the pod didn't tolerate, 2 Insufficient cpu.

    K8S Pod 一直处于 Pending 状态 有几个原因可以阻止 Pod 运行,但我们将描述三个主要问题: 调度问题:无法在任何节点上调度 Pod. 镜像问题:下载容器镜像时出现问题. 依赖性问题: ...

  9. Problem 550A - Two Substrings

    A - Two Substrings You are given string s. Your task is to determine if the given strings contains t ...

  10. shardingsphere 5.1.1 分库分表

    1. mysql配置: application-dubboService = spring-csc-campaign-agent-context.xml kafka.topics.redisAcces ...