GNU/Linux >> Znalost Linux >  >> Linux

Jak zkombinovat všechny řádky, které končí znakem zpětného lomítka?

Je možné pomocí běžného nástroje příkazového řádku, jako je sed nebo awk, spojit všechny řádky, které končí daným znakem, například zpětným lomítkem?

Například vzhledem k souboru:

foo bar bash baz
dude happy

Chtěl bych získat tento výstup:

foo bar bash baz
dude happy

Přijatá odpověď:

kratší a jednodušší řešení sed:

sed  '
: again
/\$/ {
    N
    s/\n//
    t again
}
' textfile

nebo one-liner, pokud používáte GNU sed :

sed ':x; /\$/ { N; s/\n//; tx }' textfile

Linux
  1. Jak jste začali s Linuxem?

  2. Jak zajistit, aby řetězec interpolovaný do `sed` substituce unikl všem metacharům?

  3. Smazání všech C komentářů se Sedem?

  1. Nahradit rozsah řádků rozsahem řádků (sed nebo jiné)?

  2. Jak vytisknout soubor a ignorovat řádky, které začínají „?“?

  3. Jak nahradit všechny řetězce v souboru, který začíná nějakou předponou?

  1. Jak odstranit všechny řádky souboru ve Vimu

  2. Jak nahradím jednoduché uvozovky jiným znakem v sed?

  3. Jak rekurzivně nahradit znaky sed?