2012-12-04 9 views

Antwort

26

Dies ist eine Variation auf der ersten Art:

echo "1 2 3 4" | gawk 'BEGIN { OFS=" :-("}; {$1=$1; print $0}' 

Ergebnisse:

1 :-(2 :-(3 :-(4 

Erläuterung:

die $1=$1 ist die Aufzeichnung neu zu erstellen, die aktuelle OFS mit (Sie können auch http://www.gnu.org/software/gawk/manual/gawk.html#Changing-Fields sehen)

Update:

(vorgeschlagen von @EdMorton und @Steve) Dies ist eine kürzere, gleichwertige Version des awk, die OFS in der Befehlszeile setzt, und nutzt print $0 als Standardaktion:

awk -v OFS=" :-(" '{$1=$1}1' 
+5

Perfekt, außer es sollte fröhliche Gesichter sein, denn es funktioniert ;-) –

+0

Das ist ein guter Einwand :) Viele Grüße –

+0

@steve note: Es gab einen Schnitt, der den Block '{$ 1 = $ 1; print $ 0} 'mit nur' $ 1 = $ 1'. Das würde für $ 1 == 0 scheitern. –

2

Äquivalent Sed:

$ echo "1 2 3 4" | sed 's/ /:-)/g' 

Hier ist eine weitere Option mit awk:

$ echo "1 2 3 4" | awk '{ gsub(/\s/, ":-)")}1' 
+0

Willkommen bei SO! Frage fragt nach awk speziell, also eine Antwort mit sed ist hier fehl am Platz – cfi

+0

Ich denke du sed sollte 'sed 's// lesen :-)/g'' wenn du bemerkst, hatte das OP einen Platz um den Smiley herum der OFS – v010dya

Verwandte Themen