2017-12-19 9 views
0

Also was ich versuche zu tun ist dies: Ich habe keybr.com verwendet, um meine Tippfähigkeiten zu schärfen und auf dieser Website können Sie "Ihren eigenen benutzerdefinierten Text bereitstellen." Jetzt habe ich Kapitel aus Büchern zum Tippen genommen, also ist es ein bisschen interessanter, als nur Buchstabengruppen zu tippen. Jetzt möchte ich auch Zahlen in den Text einfügen. Genauer gesagt, zwischen jedem Wort haben etwas wie "393" und zufällige setzt kleiner und größer als dieses Beispiel.ersetzen Zeichenfolge in Textdatei mit zufälligen Zeichen

so habe ich ein Kapitel eines Buches in eine Datei in meinem Home-Ordner gespeichert. Jetzt brauche ich nur einen Befehl, um nach Leerzeichen zu suchen und eine Gruppe von Zahlen einzugeben und ein Leerzeichen hinzuzufügen, so dass ein Satz so aussehen würde: Der 293 Hund 328 ist 102 schwarz. Die 334 ... usw.

Ich habe nachgeschlagen Linux-Befehle über Suchmaschinen und ich habe herausgefunden, wie Strings in Textdateien ersetzen:

sed -i ‚s/Original/neu/g 'file.txt

und wie Zufallszahlen erzeugen mit:

$ shuf -i MIN-MAX -n COUNT

ich kann einfach nicht herausfinden, wie die Ausgabe eines einen Zeilenbefehl, die haben Zufallszahlen zwischen jedem Wort. Ich bin immer noch auf der Suche, danke an alle, die sich die Zeit nehmen, mein Problem zu lesen.

+0

Verwenden ' awk "dafür. – dawg

+0

ok danke. das wird helfen, meine Suche einzuschränken. – burntt999

+0

wow die Man-Datei auf awk ist ziemlich einschüchternd – burntt999

Antwort

0

Perl zur Rettung!

perl -pe 's/ /" " . (100 + int rand 900) . " "/ge' <input.txt> output.txt 
  • -p liest die Eingangs Zeile für Zeile, nachdem eine Zeile zu lesen, den Code ausgeführt wird und druckt die Zeile mit dem Ausgang
  • s/// die Substitution ähnlich ist, dass Sie von sed
  • wissen
  • /g bedeutet global, dh es ersetzt so oft wie möglich
  • /e bedeutet das Ersatzteil ist ein Code zu laufen. In diesem Fall generiert der Code eine Zufallszahl (100-999).
+0

Vielen Dank. Dies funktionierte nur so reibungslos wie der awk Befehl. Ich werde bald diesen Befehl sezieren, um ihn auch zu verstehen. danke nochmal – burntt999

0

Gegeben:

$ echo "$txt" 
Here is some random words. Please 
insert a number a space between each one. 

Hier ist ein einfaches awk ist, das zu tun:

$ echo "$txt" | awk '{for (i=1;i<=NF;i++) printf "%s %d ", $i, rand()*100; print ""}' 
Here 92 is 59 some 30 random 57 words. 74 Please 78 
insert 43 a 33 number 77 a 10 space 78 between 83 each 76 one. 49 

Und hier ist in etwa die gleiche Sache in reiner Bash:

while read -r line; do 
    for word in $line; do 
     printf "%s %s" "$word $((1+$RANDOM % 100))" 
    done 
    echo 
done < <(echo "$txt") 
+0

danke hat super geklappt. und jetzt muss ich den Befehl sezieren, um zu sehen, wie es funktioniert – burntt999

Verwandte Themen