shell脚本统计符合字符的行数
时间: 2023-09-02 13:02:49 浏览: 55
可以使用grep命令来统计符合字符的行数。grep命令是一个强大的文本搜索工具,它可以根据给定的模式在一个或多个文件中搜索匹配的内容,并将匹配到的行进行输出。
假设我们要统计文件中包含字符"abc"的行数,可以使用以下的shell脚本:
```shell
#!/bin/bash
file="example.txt" # 要统计的文件名
pattern="abc" # 要搜索的字符
count=$(grep -c "$pattern" "$file") # 使用grep命令统计匹配到的行数
echo "符合字符的行数为:$count"
```
将上述代码保存为一个.sh文件(比如search.sh),然后在终端中运行该脚本(前提是你已经在终端中切换到.sh文件所在的目录),即可看到符合字符的行数输出。
这里使用的是grep命令的-c选项,它可以统计匹配到的行数并输出。$pattern是要搜索的字符,$file是要搜索的文件名。通过将grep命令的输出赋值给一个变量count,我们就可以在shell脚本中使用这个变量来显示统计结果。
相关问题
shell脚本实现信息统计
shell脚本可以通过读取文件、命令行参数或者用户输入来实现信息统计。以下是一些常见的信息统计功能:
1. 统计文件中某个关键词出现的次数
可以使用grep命令来搜索文件中的关键词,并使用wc命令来统计出现次数。例如:
```
grep "keyword" file.txt | wc -l
```
2. 统计文件中行数、单词数、字符数
可以使用wc命令来统计文件中的行数、单词数和字符数。例如:
```
wc -l file.txt # 统计行数
wc -w file.txt # 统计单词数
wc -c file.txt # 统计字符数
```
3. 统计文件中每个单词出现的次数
可以使用awk命令来分割文件中的每一行,并统计每个单词出现的次数。例如:
```
awk '{for(i=1;i<=NF;i++) {count[$i]++}} END {for(j in count) {print j,count[j]}}' file.txt
```
4. 统计系统中某个进程的CPU、内存占用情况
可以使用ps命令来获取系统中某个进程的PID,并使用top命令来实时监控该进程的CPU、内存占用情况。例如:
```
pid=$(ps -ef | grep "process_name" | grep -v grep | awk '{print $2}')
top -p $pid
```
以上是一些常见的信息统计功能,可以根据具体需求进行修改和扩展。
在Linux中用c编写Shell脚本,打印给定行数的*号,第一行打印一个,第二行打印4个,每行递增3个,行数由用户在命令行上输入。
可以使用以下C语言代码编写Shell脚本:
```c
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[]) {
int n, i, j, k;
if (argc != 2) {
printf("Usage: %s <number of lines>\n", argv[0]);
return 1;
}
n = atoi(argv[1]);
if (n <= 0) {
printf("Invalid number of lines: %d\n", n);
return 1;
}
for (i = 1, k = 1; i <= n; i++, k += 3) {
for (j = 0; j < k; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
```
其中,`argc` 表示命令行参数的个数,`argv` 是一个字符串数组,存储了命令行参数的值。在本例中,需要传入一个参数,即行数。
首先,检查命令行参数是否正确。如果参数个数不为 2,即只传入了可执行文件名,就输出使用方法并返回 1。如果行数小于等于 0,也输出错误信息并返回 1。
然后,使用两个嵌套的循环,分别控制行数和每行的星号个数。星号的个数从 1 开始,每行递增 3 个。每行输出完毕后,记得要换行。
最后,返回 0。