GNU/Linux >> Znalost Linux >  >> Linux

Připojení řádku k souboru pouze v případě, že ještě neexistuje

Jednoduše:)

grep + echo by mělo stačit:

grep -qxF 'include "/configs/projectname.conf"' foo.bar || echo 'include "/configs/projectname.conf"' >> foo.bar
  • -q buď zticha
  • -x sladit celý řádek
  • -F vzor je obyčejný řetězec
  • https://linux.die.net/man/1/grep

Edit:začleněny návrhy @cerin a @thijs-wouters .


Zkuste toto:

grep -q '^option' file && sed -i 's/^option.*/option=value/' file || echo 'option=value' >> file

Toto by bylo čisté, čitelné a opakovaně použitelné řešení využívající grep a echo přidat řádek do souboru pouze v případě, že ještě neexistuje:

LINE='include "/configs/projectname.conf"'
FILE='lighttpd.conf'
grep -qF -- "$LINE" "$FILE" || echo "$LINE" >> "$FILE"

Pokud potřebujete porovnat celý řádek, použijte grep -xqF

Přidejte -s ignorovat chyby, když soubor neexistuje, vytvořením nového souboru pouze s tímto řádkem.


Linux
  1. Spusťte úlohu cron, pouze pokud ještě není spuštěna

  2. open() v Pythonu nevytvoří soubor, pokud neexistuje

  3. Jak vytvořit soubor, pouze pokud neexistuje?

  1. přidat řádek do souboru POUZE pokud v souboru již není

  2. Proč mi wget'ing image dává soubor, ne obrázek?

  3. sed:jak nahradit řádek, pokud byl nalezen, nebo připojit na konec souboru, pokud nebyl nalezen?

  1. Soubor metadat neodpovídá kontrolnímu součtu – chyba YUM!

  2. Linux - grep od určitých řádků až do konce souboru

  3. Grep v obrovském souboru protokolu (>14 GB) pouze posledních x GB?