实用脚本能批量插入行到文本文件吗?

wen 实用脚本 1

本文目录导读:

实用脚本能批量插入行到文本文件吗?

  1. 使用 sed 命令(最常用)
  2. 使用 awk 命令
  3. 使用 Python 脚本(更灵活)
  4. 批量处理多个文件
  5. 高级批量插入示例
  6. 实用脚本示例
  7. 注意事项

当然可以!以下是几种实用的批量插入行到文本文件的方法:

使用 sed 命令(最常用)

在特定行号前插入

# 在第5行前插入 "新行内容"
sed '5i\新行内容' file.txt
# 修改原文件(使用 -i 选项)
sed -i '5i\新行内容' file.txt

在特定行号后插入

# 在第10行后插入
sed '10a\新行内容' file.txt

批量插入多行

# 插入多行,用 \n 分隔
sed '3i\第一行\n第二行\n第三行' file.txt

使用 awk 命令

# 在第3行后插入多行
awk 'NR==3{print; print "插入行1"; print "插入行2"; next}1' file.txt

使用 Python 脚本(更灵活)

# insert_lines.py
def insert_lines(filename, target_line, lines_to_insert):
    with open(filename, 'r') as file:
        content = file.readlines()
    content.insert(target_line - 1, lines_to_insert + '\n')
    with open(filename, 'w') as file:
        file.writelines(content)
# 使用示例
insert_lines('file.txt', 5, '这是插入的内容')

批量处理多个文件

使用循环

# 在所有 .txt 文件的第3行前插入
for file in *.txt; do
    sed -i '3i\插入内容' "$file"
done

使用 find 命令

# 递归处理所有 .log 文件
find . -name "*.log" -exec sed -i '2i\插入内容' {} \;

高级批量插入示例

在匹配模式的行后插入

# 在包含 "ERROR" 的行后插入
sed '/ERROR/a\插入内容' file.txt
# 在包含 "START" 的行前插入
sed '/START/i\插入内容' file.txt

在文件开头或结尾插入

# 在文件开头插入
sed '1i\文件开头内容' file.txt
# 在文件结尾插入
sed '$a\文件结尾内容' file.txt

实用脚本示例

#!/bin/bash
# batch_insert.sh - 批量插入行的实用脚本
# 参数:文件列表,行号,插入内容
insert_lines() {
    local files="$1"
    local line_number="$2"
    local content="$3"
    for file in $files; do
        if [ -f "$file" ]; then
            sed -i "${line_number}i\\${content}" "$file"
            echo "已处理: $file"
        fi
    done
}
# 使用示例
insert_lines "*.txt" 3 "自动插入的内容"

注意事项

  1. 备份文件:修改前建议先备份

    cp file.txt file.txt.bak
  2. 测试运行:先用无 -i 选项测试

    sed '5i\测试内容' file.txt | head -10
  3. 特殊字符处理包含特殊字符,需要转义

    sed '3i\包含\/转义\/字符\/的\\内容' file.txt

这些方法应该能满足大多数批量插入需求,根据你的具体场景选择最合适的方法即可!

抱歉,评论功能暂时关闭!