shell统计两个txt问题不同的行数
时间: 2024-03-09 22:47:29 浏览: 77
可以使用 `diff` 命令来比较两个文本文件的差异,并使用 `wc` 命令来统计不同的行数。具体方法如下:
```
diff file1.txt file2.txt | grep "^>" | wc -l
```
这个命令会将 `file1.txt` 和 `file2.txt` 进行比较,找出其中不同的行,并统计这些行的数量。其中,`diff` 命令会输出不同行的信息,`grep` 命令会过滤掉以 `>` 开头的行,这些行表示 `file2.txt` 中出现而 `file1.txt` 中没有的行,最后使用 `wc -l` 命令来统计行数。
如果要统计 `file1.txt` 中出现而 `file2.txt` 中没有的行数,可以将 `>` 改为 `<`,例如:
```
diff file1.txt file2.txt | grep "^<" | wc -l
```
这个命令会统计 `file1.txt` 中出现而 `file2.txt` 中没有的行数。
相关问题
编写shell脚本文件统计两个文件中包含the的的行数并相加输出结果
编写一个Shell脚本来统计两个文件中包含单词"the"的行数并相加,你可以创建一个简单的bash script,如下所示:
```bash
#!/bin/bash
# 定义要检查的文件名
file1="file1.txt"
file2="file2.txt"
# 使用grep命令找出每文件包含"the"的行数,并将结果乘以1(因为默认grep会返回匹配行的数量)
lines_in_file1=$(grep -c "the" "$file1")
lines_in_file2=$(grep -c "the" "$file2")
# 计算总行数
total_lines=$((lines_in_file1 + lines_in_file2))
# 输出结果
echo "The total number of lines containing 'the' in both files is: $total_lines"
```
保存这个脚本到一个.sh文件,例如`count_the_lines.sh`,然后给它执行权限:
```sh
chmod +x count_the_lines.sh
```
接着,运行脚本:
```sh
./count_the_lines.sh
```
编写Shell脚本,完成: 在/opt下创建一个目录sh,取/etc/profile的前1000字节保存到本目录下 head.txt,取/etc/profile的后1000字节保存到本目录下tail.txt,统计两个文件 的行数,写到wc.txt中,对结果进行排序,输出排序结果。
编写Shell脚本可以分为以下几个步骤:
1. 创建目录 `sh` 如果它不存在:
```bash
mkdir -p /opt/sh
```
2. 使用 `head` 和 `tail` 命令分别获取 `/etc/profile` 的前1000字节和后1000字节,并存入相应的文本文件:
```bash
head -c 1000 /etc/profile > /opt/sh/head.txt
tail -c +$(stat -c%s /etc/profile | awk '{print $1-1000}') /etc/profile > /opt/sh/tail.txt
```
这里我们先计算出 `/etc/profile` 文件的大小,然后从倒数第1001个字符开始截取。
3. 使用 `wc -l` 统计行数并保存到 `wc.txt` 文件:
```bash
wc -l /opt/sh/head.txt /opt/sh/tail.txt > /opt/sh/wc.txt
```
`wc -l` 命令用于计算行数,输出直接追加到 `wc.txt` 中。
4. 对 `wc.txt` 内的内容进行排序:
```bash
sort -n /opt/sh/wc.txt > /opt/sh/sorted_wc.txt
```
`sort -n` 表示按照数字进行排序。
5. 输出排序后的结果:
```bash
cat /opt/sh/sorted_wc.txt
```
完整的脚本如下:
```bash
#!/bin/bash
mkdir -p /opt/sh || exit 1
# 获取头尾部分
head -c 1000 /etc/profile > /opt/sh/head.txt
tail -c +$(stat -c%s /etc/profile | awk '{print $1-1000}') /etc/profile > /opt/sh/tail.txt
# 统计行数并排序
wc -l /opt/sh/head.txt /opt/sh/tail.txt > /opt/sh/wc.txt
sort -n /opt/sh/wc.txt > /opt/sh/sorted_wc.txt
# 输出排序结果
echo "Sorted wc result:"
cat /opt/sh/sorted_wc.txt
```
为了运行这个脚本,需要给予执行权限:
```bash
chmod +x script.sh
./script.sh
```
其中,`script.sh` 是脚本的文件名。执行完成后,你将看到排序后的行数列表。
阅读全文