GNU/Linux >> Znalost Linux >  >> Linux

Nahraďte mezery podtržítky pomocí BASH

$ a="hello world"
$ echo ${a// /_}
hello_world

Podle bash(1):

${parameter/pattern/string}

Záměna vzoru. Vzor se rozšíří, aby vytvořil vzor stejně jako při rozšíření názvu cesty. Parametr se rozšíří a nejdelší shoda vzoru s jeho hodnotou je nahrazena řetězcem. Pokud vzor začíná /, budou nahrazeny všechny shody vzoru
s provázkem. Obvykle se nahrazuje pouze první zápas. Pokud vzor začíná znakem #, musí se shodovat na začátku rozšířené hodnoty parametru. Pokud vzor začíná %, musí se shodovat na konci rozšířené hodnoty parametru. Pokud je řetězec null, shody vzoru se odstraní a / následující vzor může být vynechán. Pokud je parametr @ nebo *, substituční operace se postupně použije na každý poziční parametr a rozšíření je výsledný seznam. Pokud je parametrem proměnná pole s indexem @ nebo *, substituční operace se postupně aplikuje na každý člen pole a rozšíření je výsledným seznamem.


Můžete zkusit následující:

str="${str// /_}"

Linux
  1. Bash If-Else prohlášení s příklady

  2. Jak nahradit mezery v názvech souborů pomocí bash skriptu

  3. Porovnávání vzorů skriptů Bash

  1. tar -C se vzorem souboru zástupných znaků

  2. Nahraďte uživatele gitolite3 za git

  3. sed nahradit všechny tabulátory a mezery jednou mezerou

  1. Bash -c s pozičními parametry?

  2. Nahradit řádky odpovídající vzoru řádky z jiného souboru v pořadí?

  3. Nahradit nový řádek nulou?