写一个shell脚本,对比文本文件A和文本文件B的不同行,并将A不同于B的文本按行输出至文本文件AA,将B不同于A的文本按行输出至文本文件BB
时间: 2024-02-21 19:59:46 浏览: 18
好的,以下是一个简单的实现:
```bash
#!/bin/bash
# 检查参数个数是否正确
if [ $# -ne 2 ]; then
echo "Usage: $0 file1 file2"
exit 1
fi
# 检查文件是否存在
if [ ! -f "$1" ] || [ ! -f "$2" ]; then
echo "Error: file does not exist"
exit 1
fi
# 对比文件并输出差异行
diff --new-line-format="" --unchanged-line-format="" "$1" "$2" | grep -v "^$" > AA
diff --new-line-format="" --unchanged-line-format="" "$2" "$1" | grep -v "^$" > BB
echo "Done"
```
这个脚本接受两个参数,分别为需要对比的两个文件的路径。脚本会使用 `diff` 命令对比两个文件,并使用 `grep` 过滤掉空行,最终将不同的行分别输出至 `AA` 和 `BB` 文件中。
相关问题
写一个shell脚本将文本文件A中包含指定内容的行,按顺序重定向输出至另外的一个文本文件B中
当然,我可以回答你的问题。以下是一个示例脚本,可以将文本文件A中包含指定内容的行,按顺序重定向输出至另外的一个文本文件B中。
```bash
#!/bin/bash
# 输入文件A的路径和名称
input_file="input.txt"
# 输出文件B的路径和名称
output_file="output.txt"
# 要查找的文本内容
search_text="hello world"
# 查找并输出包含指定内容的行
grep "$search_text" "$input_file" | while read -r line; do
echo "$line" >> "$output_file"
done
```
这个脚本将会查找 "input.txt" 文件中所有包含 "hello world" 的行,并将它们顺序写入 "output.txt" 文件中。你可以根据你的需求修改输入和输出文件的路径、名称和查找的文本内容。
写一个shell脚本将文本文件A中包含指定内容的行及其后面的所有行,按顺序重定向输出至另外的一个文本文件B中
当然,我可以回答你的问题。以下是一个示例脚本,可以将文本文件A中包含指定内容的行及其后面的所有行,按顺序重定向输出至另外的一个文本文件B中。
```bash
#!/bin/bash
# 输入文件A的路径和名称
input_file="input.txt"
# 输出文件B的路径和名称
output_file="output.txt"
# 要查找的文本内容
search_text="hello world"
# 查找包含指定内容的行,并输出该行及其后面的所有行
grep -A9999 "$search_text" "$input_file" | while read -r line; do
# 如果读到了分隔符,说明已经读到了该行后面的所有行,退出循环
if [[ $line == "--" ]]; then
break
fi
echo "$line" >> "$output_file"
done
```
这个脚本将会查找 "input.txt" 文件中所有包含 "hello world" 的行,并将它们顺序写入 "output.txt" 文件中,包括该行及其后面的所有行。你可以根据你的需求修改输入和输出文件的路径、名称和查找的文本内容。