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

时间:2011-07-08 13:30:05

标签: bash sed

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

到目前为止,我有这个:

APPEND='Some/Path which is/variable'
sed '${s/$/$APPEND/}' test.txt

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

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

编辑:我刚试过这个:

$ sed '${s/$/'"$APPEND/}" test.txt
sed: -e Ausdruck #1, Zeichen 11: Unbekannte Option für `s'

5 个答案:

答案 0 :(得分:20)

echo "$(cat $FILE)$APPEND" > $FILE

这就是我所需要的。

答案 1 :(得分:7)

将此作为输入:

1 a line
2 another line
3 one more

和这个bash-script:

#!/bin/bash

APPEND='42 is the answer'

sed "s|$|${APPEND}|" input

输出:

1 a line42 is the answer
2 another line42 is the answer
3 one more42 is the answer

使用awk的解决方案:

BEGIN {s="42 is the answer"}

{lines[NR]=$0 }

END {
    for (i = 1; i < NR; i++)
        print lines[i]
    print lines[NR], s
}

答案 2 :(得分:3)

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

echo $APPEND >>test.txt

答案 3 :(得分:2)

sed '${s/$/'"$APPEND"'/}' test.txt

答案 4 :(得分:0)

在sed替换命令后添加分号!

(
set -xv
APPEND=" word"
echo '
1
2
3' |
sed '${s/$/'"${APPEND}"'/;}'
#sed "\${s/$/${APPEND}/;}"
)