GNU/Linux >> Znalost Linux >  >> Linux

Který je nejpřenosnější z Sed, Awk, Perl a Sh?

Může někdo seřadit tyto nástroje podle přenositelnosti? Která z těchto možností je jistá lze nalézt i na těch nejmenších *nix systémech? Je některý z nich 100% přítomen? Můj odhad je, že pořadí je následující:

  1. awk
  2. sed
  3. sh
  4. perl

I když si představuji, že existují systémy, které nevyužívají bourne shell, některé shell bude přítomen jako výchozí, bude to vždy na /bin/sh ? Pravděpodobně ne, pokud to není skořápka typu Bourne. Oba awk a sed mít stránky vysvětlující je ve specifikaci POSIX, takže pravděpodobně budou vždy přítomny. Je to tak?
Mohu si být jistý že se obojí nainstaluje na nějaký *nix? Včetně vestavěných systémů?

Přijatá odpověď:

Který ze sed, awk, perl a sh je nejpřenosnější?

sed , sh a awk jsou přenosné podle specifikace POSIX, perl není podporováno standardem.

Může někdo tyto nástroje seřadit podle přenositelnosti?

Pokud se budete držet vyhovujícího kódu, nemělo by existovat žádné pořadí přenositelnosti pro tři příkazy POSIX.

Která z nich se určitě najde i na těch nejmenších *nix systémech?

Tři POSIXové spolu s mnoha dalšími utilitami jsou povinné pro OS, aby byl POSIX. Existují však operační systémy, kterým některé z nich chybí kvůli minimalizaci nebo poskytují neúplné/nevyhovující implementace.

Ve skutečnosti většina (pokud ne všechny) svobodných a open source operačních systémů podobných Unixu by pravděpodobně neprošla procesem přizpůsobení, pokud by se o to pokusily, a stejně to nikdy nezkusí.

Je některý z nich 100% jistý, že je přítomen?

Překvapilo by mě, kdybych našel *nix jako OS bez shellu založeného na Bourne syntaxi, ale vše je možné, zvláště u vestavěných systémů.

Můj odhad je, že pořadí je následující:
Nějaký shell bude přítomen jako výchozí, bude to vždy v /bin/sh?

/bin/sh je pravděpodobně shell rodiny syntaxe Bourne, ale není zaručeno, že bude kompatibilní s POSIX, a to ani v systémech kompatibilních s POSIX. Například je to /usr/xpg4/bin/sh na Solaris 10 a starších, zatímco /bin/sh je původní původní Bourne shell, který není POSIX.

Související:Jak použít sed nebo ex k nahrazení bloku (víceřádkového kódu) novým blokem textu (kódem)?
Linux
  1. Příkaz Linux AWK – Příklady syntaxe použití Linuxu a Unixu

  2. Práce se sloupci – Awk a Sed?

  3. Koncept 'Hold space' a 'Pattern space' v sed

  1. Nejpřenosnější způsob spuštění emulátoru terminálu?

  2. Přenosný (posix) způsob, jak dosáhnout substituce procesu?

  3. Jaký je nejbezpečnější a nejpřenosnější způsob vyvolání binárního echa?

  1. Který příkaz terminálu Linuxu používáte nejčastěji?

  2. Odstranit řádek obsahující určitý řetězec a následující řádek?

  3. Jaký je rozdíl mezi Print a Printf v Awk?