如何通过命令行将变量文本附加到文件的最后一行?

Mar*_*oma 11 bash sed

你能告诉我我(Linux用户)如何在文本文件的最后一行添加文本吗?

到目前为止我有这个:

APPEND='Some/Path which is/variable'
sed '${s/$/$APPEND/}' test.txt
Run Code Online (Sandbox Code Playgroud)

它有效,但$ APPEND添加了变量内容.我知道这个的原因是我用于sed的单引号(').但是当我简单地替换'by'时,文件中没有添加任何文本.

你知道解决方案吗?我并不坚持使用sed它,它只是我脑海中的第一个命令行工具.您可以使用您喜欢的每个标准命令行程序.

编辑:我刚试过这个:

$ sed '${s/$/'"$APPEND/}" test.txt
sed: -e Ausdruck #1, Zeichen 11: Unbekannte Option für `s'
Run Code Online (Sandbox Code Playgroud)

Mar*_*oma 23

echo "$(cat $FILE)$APPEND" > $FILE
Run Code Online (Sandbox Code Playgroud)

这就是我所需要的.


Sin*_*ion 7

附加数据的最简单方法是使用文件重定向。

echo $APPEND >>test.txt
Run Code Online (Sandbox Code Playgroud)

  • 这将在下一行中添加文本。我想在同一行中附加文字。 (4认同)

Fre*_*ihl 7

使用此作为输入:

1 a line
2 another line
3 one more
Run Code Online (Sandbox Code Playgroud)

和这个bash脚本:

#!/bin/bash

APPEND='42 is the answer'

sed "s|$|${APPEND}|" input
Run Code Online (Sandbox Code Playgroud)

输出:

1 a line42 is the answer
2 another line42 is the answer
3 one more42 is the answer
Run Code Online (Sandbox Code Playgroud)

使用awk的解决方案:

BEGIN {s="42 is the answer"}

{lines[NR]=$0 }

END {
    for (i = 1; i < NR; i++)
        print lines[i]
    print lines[NR], s
}
Run Code Online (Sandbox Code Playgroud)