Chcę wstawić tekst na górze już istniejącego pliku. Jak mogę to osiągnąć? Próbowałem echo
i tee
nie udało mi się.
Próbowałem wstawić linię repo na górze sources.list
pliku z terminala.
Uwaga
Potrzebuję szybkiego rozwiązania z jednej linii, ponieważ metoda innej odpowiedzi była mi już znana
apt
command-line
bash
Anwar
źródło
źródło
echo "deb http://extras.ubuntu.com/ubuntu precise main" | sudo tee -a /etc/apt/sources.list
- aby uzyskać uprawnienia administratora, musisz także sudo przed tee. Ale dlaczego, do licha, chciałbyś dodać coś na szczycie źródeł.list?Odpowiedzi:
To jest naprawdę dość łatwe dzięki
sed
:sed -i -e '1iHere is my new top line\' filename
1i
mówi sedowi, aby wstawił tekst następujący w wierszu 1 pliku; nie zapomnij\
nowego wiersza na końcu, aby istniejąca linia 1 została przeniesiona do linii 2.źródło
s
zamiast i in1i
.echo "Text Here" >> Filename
W ogólnej edycji w miejsce skryptu jest trudne, ale można użyć
echo
icat
, a następniemv
Jeśli jednak korzystasz ze źródeł.list, musisz dodać weryfikację i wypunktowanie, aby wykryć błędy itp., Ponieważ tak naprawdę nie chcesz tego stracić. Ale to osobne pytanie :-)
źródło
wiadomo, że
prepend
to moja niestandardowa powłoka :Użyj również ścieżki relatif lub absolutnej, powinna dobrze działać:
Aktualizacja :
jeśli potrzebujesz stałego skryptu, otwórz,
nano /etc/bash.bashrc
a następnie dodaj tę funkcję na końcu pliku:Ponownie otwórz terminal i ciesz się:
źródło
A dlaczego nie użyć do tego oryginalnego edytora tekstu? ed jest standardowym edytorem tekstu.
Lub jeśli chcesz, aby polecenia były bardziej czytelne:
1
: przejdź do pierwszej liniii
: tryb wstawiania.
: zatrzymaj wstawianie, wróć do trybu normalnegowq
: pisz i rezygnuj, dziękuję, do widzenia.źródło
FIRST LINE
) z tym?first_line
następnie:ed -s filename < <(printf '%s\n' 1i "$first_line" . wq)
. Upewnij się, że zmienna nie rozwija się do pojedynczej kropki i nie zawiera żadnych znaków nowej linii (więc odkaż ją, jeśli pochodzi z danych wprowadzonych przez użytkownika).Zawsze jest taka
awk
opcja. Zastąpstring
zmienną zawartością. Nie jest to jednak zmiana na miejscu. Osobiście staram się nie wprowadzać zmian w miejscu. To zdecydowanie osobiste preferencje. Dwie rzeczy,-v
oznaczają zmienną w awk i tutaj zmiennan
jest używana do skutecznego dopasowania numeru liniiNR == 1
. Możesz użyć tego na wiele sposobów, po prostu zmieniając wartośćn
is
.Przykład:
źródło
Możesz używać Vima w trybie Ex:
1
wybierz 1. linięi
wstaw nowy wiersz tekstux
Zapisz i zamknijźródło