Wie kann man eine Liste von Wörtern in einer Shell-Zeichenkette umkehren?

7

Ich habe eine Liste von Wörtern in einem String:

%Vor%

Ich möchte es umkehren, um

zu erhalten %Vor%

Wie kann ich das mit ash machen?

    
MOHAMED 30.12.2014, 10:31
quelle

12 Antworten

13

Sie können awk wie folgt verwenden:

%Vor%     
Feten besbes 30.12.2014, 11:09
quelle
8

Ja, Sie können diese Befehle versuchen,

Für string ,

%Vor%

Für die Variable ,

%Vor%     
Skynet 30.12.2014 10:35
quelle
5

Sie könnten awk verwenden:

%Vor%

Schleife rückwärts durch die Felder und drucke jedes einzelne. OFS ist das Ausgabefeldtrennzeichen (standardmäßig ein Leerzeichen) und ORS ist das Ausgabesatztrennzeichen (ein Zeilenumbruch).

Ich nehme an, dass Sie nicht möchten, dass die Reihenfolge der Buchstaben in jedem Wort umgekehrt wird.

    
Tom Fenech 30.12.2014 10:36
quelle
4
___ qstnhdr ___ Wie kann man eine Liste von Wörtern in einer Shell-Zeichenkette umkehren? ___ answer27703859 ___

Ja, Sie können diese Befehle versuchen,

Für string ,

%Vor%

Für die Variable ,

%Vor%     
___ answer27704381 ​​___

Hier ist ein awk mit do while (hier bei Stackoverflow nicht viel benutzt)

Keine zusätzliche Variable erforderlich i

%Vor%     
___ answer36944275 ___

Wenn Sie reine Shell, keine externen Tools benötigen, beachten Sie Folgendes:

%Vor%

Ansonsten kann %code% Ihnen sofort helfen:

%Vor%

oder

%Vor%     
___ answer29693849 ___

Wenn die Verwendung von Haskell akzeptabel ist, gibt es ein nettes Tool namens Hawk (Haskell-Awk), das das sehr leicht machen kann. Zuerst müssen Sie es installieren:

%Vor%

Dann:

%Vor%

Sie benötigen %code% in Ihrem %code% , um %code% zu finden.

    
___ answer27704350 ___

Sie können %code% wie folgt verwenden:

%Vor%     
___ answer36946018 ___

sed Gruppierung:

%Vor%     
___ answer27703876 ___

Sie könnten awk verwenden:

%Vor%

Schleife rückwärts durch die Felder und drucke jedes einzelne. %code% ist das Ausgabefeldtrennzeichen (standardmäßig ein Leerzeichen) und %code% ist das Ausgabesatztrennzeichen (ein Zeilenumbruch).

Ich nehme an, dass Sie nicht möchten, dass die Reihenfolge der Buchstaben in jedem Wort umgekehrt wird.

    
___ answer38745122 ___

Eine weitere reine Bash-Lösung:

%Vor%     
___ answer39315430 ___

Das funktioniert in %code% (Ich habe %code% nicht, kann das also nicht überprüfen):

%Vor%

benutze es so:

%Vor%

Hier sind einige Alternativen. Erstens, eine, die nicht den C-Stil %code% verwendet:

%Vor%

Der nächste (von hier ) funktioniert dort, wo Ersetzungen nicht möglich sind (z. B. unter Android)

%Vor%

Ich habe versucht, eine Lösung zu finden, die in einem Android-Skript funktioniert, wobei %code% C-style %code% oder komplexe Ersetzungsoperationen nicht mag. Ich habe das letzte Beispiel gefunden, weil es keines benutzt.

    
___ answer29582914 ___
%Vor%

AUSGABE

**** Programm zum Umkehren eines Strings ***

Geben Sie hier ein: Ich liebe mein Indien

Sie haben eingegeben: Ich liebe Mein Indien

Rückseite der Schnur: Indien Meine Liebe I

    
___ tag123linux ___ LINUX FRAGEN MÜSSEN PROGRAMMIEREN VERWANDT SEIN. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf das Programmieren mit Linux-APIs oder das Linux-spezifische Verhalten bezieht, nicht nur, weil Sie Ihren Code unter Linux ausführen. Wenn Sie Linux-Unterstützung benötigen, können Sie https://unix.stackexchange.com oder https://askubuntu.com ausprobieren ___ answer46795520 ___

BASH

Dies ist die Funktion, die ich benutze (nicht in Asche getestet)

%Vor%

DASH

(funktioniert auch in bash, aber manche Leute scheinen eine Abneigung gegen echo zu haben)

%Vor%     
___ tag123shell ___ Der Begriff "Shell" bezieht sich auf eine allgemeine Klasse textbasierter interaktiver Befehlsinterpreter, die meist mit den Unix- und Linux-Betriebssystemen verknüpft sind. Bei Fragen zum Shell-Scripting verwenden Sie bitte ein spezifischeres Tag wie 'bash', 'powershell' oder 'ksh'. Ohne ein spezifisches Tag sollte eine portable (POSIX-konforme) Lösung angenommen werden, obwohl zusätzlich 'posix' oder 'sh' zu bevorzugen ist. ___ tag123awk ___ AWK ist eine interpretierte Programmiersprache, die für die Textverarbeitung entwickelt wurde und in der Regel als Datenextraktions- und Berichtswerkzeug verwendet wird. AWK wird weitgehend mit Unix-Systemen verwendet. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf die Programmierung mit AWK- oder AWK-basierten APIs bezieht. Fragen zur Verwendung oder zur Fehlerbehebung von AWK-Befehlszeilenoptionen selbst sind nicht Thema. ___ tag123sed ___ Sed (Stream EDitor) ist ein Befehlszeilen-Editor für die POSIX-Umgebung. Sed verarbeitet eine oder mehrere Dateien gemäß einem Editier-Skript und schreibt die Ergebnisse in die Standardausgabe. Es wurde in den Bell Labs entwickelt und existiert seit Mitte der 70er Jahre. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf die Programmierung mit sed- oder sed-basierten APIs bezieht. Fragen zur Verwendung oder Problembehandlung von sed-Befehlszeilenoptionen selbst sind nicht Thema. ___ answer39316690 ___

Wenn die Eingabe aus der Datei gelesen werden soll (wie hier gefragt: Zeile rückwärts lesen) aus einer Datei ), Ich habe das folgende Bash-Skript erstellt, das die Wörter jeder Zeile in umgekehrter Reihenfolge druckt, ohne die Reihenfolge der Zeilen der Datei zu ändern (ich brauchte das, wenn ich zum Beispiel Wörter wie RTL anstelle von LTR lese):

%Vor%


Anmerkungen:
1) Stellen Sie sicher, dass die Eingabedatei im UNIX-EOL-Format vorliegt, andernfalls wird das letzte Wort möglicherweise von jeder Zeile abgeschnitten
2) Einige Fehlerprüfungen wurden der Einfachheit halber weggelassen.

    
___ qstntxt ___

Ich habe eine Liste von Wörtern in einem String:

%Vor%

Ich möchte es umkehren, um

zu erhalten %Vor%

Wie kann ich das mit %code% machen?

    
___ tag123ash ___ Eine Shell (Ash), geschrieben von Kenneth Almquist und veröffentlicht am 30. Mai 1989 in der Usenet-Nachrichtengruppe comp.sources.unix. Sie hat ähnliche Eigenschaften wie die Bourne-Shell (sh). Seine vielen Derivate enthalten die System-Shell auf; Debian (Bindestrich), FreeBSD (sh), NetBSD (sh) und die Standard-Shell in Busybox (Esche). ___
Jotne 30.12.2014 11:11
quelle
1

Wenn die Verwendung von Haskell akzeptabel ist, gibt es ein nettes Tool namens Hawk (Haskell-Awk), das das sehr leicht machen kann. Zuerst müssen Sie es installieren:

%Vor%

Dann:

%Vor%

Sie benötigen ~/.cabal/bin in Ihrem PATH , um hawk zu finden.

    
Jens Petersen 17.04.2015 08:16
quelle
1

Wenn Sie reine Shell, keine externen Tools benötigen, beachten Sie Folgendes:

%Vor%

Ansonsten kann tac Ihnen sofort helfen:

%Vor%

oder

%Vor%     
anandi 29.04.2016 17:28
quelle
1

sed Gruppierung:

%Vor%     
Aguevara 29.04.2016 19:22
quelle
1

Das funktioniert in sh (Ich habe ash nicht, kann das also nicht überprüfen):

%Vor%

benutze es so:

%Vor%

Hier sind einige Alternativen. Erstens, eine, die nicht den C-Stil for verwendet:

%Vor%

Der nächste (von hier ) funktioniert dort, wo Ersetzungen nicht möglich sind (z. B. unter Android)

%Vor%

Ich habe versucht, eine Lösung zu finden, die in einem Android-Skript funktioniert, wobei sh C-style for oder komplexe Ersetzungsoperationen nicht mag. Ich habe das letzte Beispiel gefunden, weil es keines benutzt.

    
starfry 04.09.2016 09:23
quelle
0
%Vor%

AUSGABE

**** Programm zum Umkehren eines Strings ***

Geben Sie hier ein: Ich liebe mein Indien

Sie haben eingegeben: Ich liebe Mein Indien

Rückseite der Schnur: Indien Meine Liebe I

    
Bhupender Singh 11.04.2015 20:54
quelle
0

Eine weitere reine Bash-Lösung:

%Vor%     
Fabien Bouleau 03.08.2016 13:31
quelle
0

Wenn die Eingabe aus der Datei gelesen werden soll (wie hier gefragt: Zeile rückwärts lesen) aus einer Datei ), Ich habe das folgende Bash-Skript erstellt, das die Wörter jeder Zeile in umgekehrter Reihenfolge druckt, ohne die Reihenfolge der Zeilen der Datei zu ändern (ich brauchte das, wenn ich zum Beispiel Wörter wie RTL anstelle von LTR lese):

%Vor%


Anmerkungen:
1) Stellen Sie sicher, dass die Eingabedatei im UNIX-EOL-Format vorliegt, andernfalls wird das letzte Wort möglicherweise von jeder Zeile abgeschnitten
2) Einige Fehlerprüfungen wurden der Einfachheit halber weggelassen.

    
harshvchawla 04.09.2016 12:00
quelle
0

BASH

Dies ist die Funktion, die ich benutze (nicht in Asche getestet)

%Vor%

DASH

(funktioniert auch in bash, aber manche Leute scheinen eine Abneigung gegen echo zu haben)

%Vor%     
Alexx Roche 17.10.2017 17:06
quelle

Tags und Links