写一个shell脚本对比文本A和文本B中以数字或者-开头的所有行,如果存在相同则输出该行及以上4行的内容分别到AA和BB
时间: 2024-03-17 16:43:45 浏览: 21
好的,以下是实现这个功能的Shell脚本。
```bash
#!/bin/bash
# 定义文本A和文本B的路径
fileA="path/to/fileA"
fileB="path/to/fileB"
# 定义输出文件AA和BB的路径
fileAA="path/to/fileAA"
fileBB="path/to/fileBB"
# 在AA和BB文件中写入表头
echo "Lines in $fileA" > "$fileAA"
echo "Lines in $fileB" > "$fileBB"
# 对比文本A和文本B
while read -r lineA; do
# 判断当前行是否以数字或-开头
if [[ $lineA =~ ^[0-9-] ]]; then
# 在文本B中查找是否有相同的行
lineB=$(grep -n "^$lineA$" "$fileB" | cut -d: -f1)
if [[ -n $lineB ]]; then
# 输出该行及以上4行的内容到AA和BB文件中
head -n "$lineA" "$fileA" | tail -n 4 >> "$fileAA"
head -n "$lineB" "$fileB" | tail -n 4 >> "$fileBB"
fi
fi
done < "$fileA"
```
解释一下脚本的逻辑:
1. 首先定义文本A和文本B的路径,以及输出文件AA和BB的路径。
2. 在AA和BB文件中写入表头。
3. 逐行读取文本A中的内容,判断当前行是否以数字或-开头。
4. 如果是,就在文本B中查找是否有相同的行,如果有,则输出该行及以上4行的内容到AA和BB文件中。
注意,以上脚本中的路径需要根据实际情况进行修改。