如何使 sed 与文件中的断行一起工作?

Luc*_*cio 3 bash scripts sed

我正在修改此脚本以将一个文件的内容插入到另一个文件中。这就是我现在所拥有的:

#!/bin/sh

# Check if first and second parameters exist
if [ ! -z "$2" ]; then
    STRING=$(cat $1)
    # Check if the supplied file exist
    if [ -e $2 ]; then
        sed -i -e "2i$STRING" $2
        echo "The string \"$STRING\" has been successfully inserted."
    else
        echo "The file does not exist."
    fi
else
   echo "Error: both parameters must be given."
fi
Run Code Online (Sandbox Code Playgroud)

我运行它: ./prepend.sh content.txt example.txt

content.txt文件:

first_line
second_line
Run Code Online (Sandbox Code Playgroud)

example.txt文件:

REAL_FIRST_LINE
REAL_SECOND_LINE
Run Code Online (Sandbox Code Playgroud)

脚本的输出:

sed: -e expression #1, char 24: unterminated `s' command
The string "first_line
second_line" has been successfully inserted.
Run Code Online (Sandbox Code Playgroud)

并且example.txt文件的内容保持不变,当我希望它是这样的:

REAL_FIRST_LINE
first_line
second_line
REAL_SECOND_LINE
Run Code Online (Sandbox Code Playgroud)

gle*_*man 8

这听起来像你想r命令

sed "1r $1" "$2"
Run Code Online (Sandbox Code Playgroud)

你也许可以用 GNU sed 做到这一点:

cat "$1" | sed '2r /dev/stdin' "$2"
Run Code Online (Sandbox Code Playgroud)