grep命令保留第一行(C语言实现)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grep命令保留第一行(C语言实现)相关的知识,希望对你有一定的参考价值。

参考技术A

Linux中的 grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。特别是在搜索日志、配置文件、过滤时应用非常广泛。

然而这个命令有个美中不足的地方。它和其他命令配合使用时,把第一行的描述信息给过滤掉了。有时我们想要 同时输出的第一行和匹配行 。因为第一行的描述信息有助于我们理解后面每个字段的含义。

比如我们查看和sda有关的文件系统

这里的116G 58G 53G 分别表示什么? 哪个才是剩余空间?
我们希望得到结果是:

Stackoverflow给出的几种方案,grep 配合 sed 和 awk 使用。但我觉得这些方法不够好,于是我用C语言写了一个程序 grep1 。它可以 智能判断标题行 ,输出彩色标题后调用 grep 完成匹配搜索。因为是调用 grep 的,所以 grep 能用的参数这里也可以用。

为什么要强调智能判断标题行呢? 不是所有标题都在第一行,有的命令(netstat)标题在第二行。。。。。

下面给出源码(少于60行),编译后移动到 /usr/local/bin/grep1 ,PATH环境变量一般包含 /usr/local/bin

效果对比:

第5章-3.四则运算(用字典实现) (30分)

四则运算(用字典实现),比较c语言的switch语句。

输入格式:

在一行中输入一个数字 在一行中输入一个四帜运算符(+,-,*,/) 在一行中输入一个数字

输出格式:

在一行中输出运算结果(小数保留2位)

输入样例1:

在这里给出一组输入。例如:

7
/
3
 

输出样例1:

在这里给出相应的输出。例如:

2.33
 

输入样例2:

在这里给出一组输入。例如:

10
/
0
 

输出样例2:

在这里给出相应的输出。例如:

divided by zero
 1 # 四则运算(用字典实现)
 2 # Author: cnRick
 3 # Time  : 2020-4-3
 4 a = float(input())
 5 op = input()
 6 b = float(input())
 7 try:
 8     res = {+:a+b,-:a-b,*:a*b,/:a/b}
 9     print("{:.2f}".format(res[op]))
10 except:
11     print("divided by zero")

 

 

以上是关于grep命令保留第一行(C语言实现)的主要内容,如果未能解决你的问题,请参考以下文章

c语言中如何只清屏后半部分保留前半部分?

C语言部分清屏如何实现

c语言中清除一行的命令

c语言删除文件中的指定的一行数据怎么做

C语言如何实现在运算过程中的四舍五入保留两位小数

关于C语言中文本文件的逐行读取的实现