GNU/Linux >> Znalost Linux >  >> Linux

Vložení souboru do jiného souboru po prvním výskytu vzoru?

Chci vložit obsah souboru1 do souboru2 po odpovídajícím VZORU. Chci to udělat až po prvním výskytu PATTERN.

Chtěl bych znát úpravu, kterou musím pro své potřeby provést v následujícím příkazu.

sed -i "/PATTERN/r file1" file2

Přijatá odpověď:

sed '/PATTERN/{
       r file1
       :a
       n
       ba
     }' file2

:a , n , ba je pouze cyklus, který vytiskne celý obsah souboru po vzoru až do konce. a všimněte si, že těchto 6 řádků je pouze jeden příkaz, ale nový řádek je potřeba k ohraničení dalšího příkazu sed za r , : a b .

další informace z info sed :

`n'
     If auto-print is not disabled, print the pattern space, then,
     regardless, replace the pattern space with the next line of input.
     If there is no more input then `sed' exits without processing any
     more commands.

`: LABEL'
     [No addresses allowed.]

     Specify the location of LABEL for branch commands.  In all other
     respects, a no-op.

`b LABEL'
     Unconditionally branch to LABEL.  The LABEL may be omitted, in
     which case the next cycle is started.

Linux
  1. Kopírovat obsah souboru do schránky bez zobrazení jeho obsahu?

  2. Jak spočítat počet řádků v souboru po zápase Grep?

  3. Jak hledat obsah po vzoru?

  1. Nástroj pro získání řádků v jednom souboru, které nejsou v jiném?

  2. Rekurzivní kat všechny soubory do jednoho souboru

  3. Jak vložím text do 1. řádku souboru pomocí sed?

  1. Vrátit pouze část řádku po odpovídajícím vzoru?

  2. Jak ohraničit -f nejnovější soubor protokolu s daným vzorem

  3. Jak odstranit řádky, které se objevují v souboru B, z jiného souboru A?