2011-07-08 12 views
5

czy mógłbyś mi powiedzieć, w jaki sposób ja (użytkownik Linux-a) mogę dodać tekst do ostatniej linii pliku tekstowego?Jak mogę dodać zmienny tekst do ostatniej linii pliku za pomocą wiersza poleceń?

mam to do tej pory:

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

To działa, ale $ APPEND dodaje insted zawartości zmiennej. Wiem, że powodem tego jest singe (") użyłem do sed. Ale gdy po prostu zastępuję "przez", do pliku nie zostanie dodany żaden tekst:

Czy znasz rozwiązanie tego problemu? Nie nalegam na używanie sed, to tylko pierwsze narzędzie wiersza poleceń, które pojawiło się w moim . umysł może użyć każdy standardowy program wiersza poleceń chcesz

zmienił. właśnie próbowałem.

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

Odpowiedz

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

Tego właśnie potrzebowałem.

+0

niesamowite, dziękuję – plainjimbo

4

Najprostszym sposobem, aby dodać dane z pliku jest przekierowanie

echo $APPEND >>test.txt 
+4

Spowoduje to dodanie tekstu w następnym wierszu. Chciałbym dołączyć tekst w tym samym wierszu. –

6

pomocą tego jako wejście:

1 a line 
2 another line 
3 one more 

i tym bash skryptu:

#!/bin/bash 

APPEND='42 is the answer' 

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

Wyjścia:

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

rozwiązanie wykorzystujące awk:

BEGIN {s="42 is the answer"} 

{lines[NR]=$0 } 

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

Dodaj średnik po poleceniu podstawiania sed!

(
set -xv 
APPEND=" word" 
echo ' 
1 
2 
3' | 
sed '${s/$/'"${APPEND}"'/;}' 
#sed "\${s/$/${APPEND}/;}" 
) 
2
sed '${s/$/'"$APPEND"'/}' test.txt 
Powiązane problemy