写一个shell脚本抓取对应文本行的上下行
时间: 2023-07-21 12:02:43 浏览: 168
shell统计文本行数脚本
5星 · 资源好评率100%
以下是一个示例的Shell脚本,用于抓取指定文本行的上下行内容:
```bash
#!/bin/bash
# 获取指定行号的上下行内容
get_context() {
local file=$1
local line=$2
local context_lines=$3
# 计算起始和结束行号
local start_line=$((line - context_lines))
local end_line=$((line + context_lines))
# 使用sed命令获取起始行号到结束行号之间的内容
sed -n "${start_line},${end_line}p" "$file"
}
# 主函数
main() {
local file=$1
local line_number=$2
local context_lines=1 # 上下各取1行作为上下文
# 检查输入参数
if [ -z "$file" ] || [ -z "$line_number" ]; then
echo "Usage: ./script.sh <file> <line_number>"
exit 1
fi
# 检查文件是否存在
if [ ! -f "$file" ]; then
echo "File '$file' does not exist."
exit 1
fi
# 检查行号是否为正整数
if ! [[ "$line_number" =~ ^[1-9][0-9]*$ ]]; then
echo "Line number must be a positive integer."
exit 1
fi
# 获取上下文内容并打印输出
get_context "$file" "$line_number" "$context_lines"
}
# 调用主函数,传入命令行参数
main "$@"
```
使用方法:
1. 将上述脚本保存为一个文件,比如`script.sh`。
2. 执行命令:`chmod +x script.sh`,添加执行权限。
3. 运行脚本:`./script.sh <file> <line_number>`,其中`<file>`为要抓取行的文件路径,`<line_number>`为要抓取的行号。
脚本会输出指定行的上下各1行的内容作为上下文。你可以根据需要修改`context_lines`变量来调整上下文行数。
阅读全文