Как добавить текст переменной в последнюю строку файла через командную строку?

не могли бы вы рассказать мне, как я (пользователь Linux) могу добавить текст в последнюю строку текстового файла?

у меня это до сих пор:

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

он работает,но $APPEND добавляется к содержимому переменной. Я знаю, что причина этого-цитата паленой ( ' ), которую я использовал для sed. Но когда я просто заменяю "на", текст не добавляется в файл.

- вы знаете решение для этого? Я не настаиваю на использовании sed, это только первый инструмент командной строки, которая пришло мне в голову. Вы можете использовать любую стандартную программу командной строки.

edit: я только что пробовал это:

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

5 ответов


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

Это было то, что мне нужно.


используя это как входной сигнал:

1 a line
2 another line
3 one more

и этот bash-скрипт:

#!/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]= }

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

самый простой способ добавления данных-перенаправление файлов.

echo $APPEND >>test.txt

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

добавить точку с запятой после команды замены sed!

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