2016-05-21 18 views
-1

Ich brauche die Datei auf diese Weise zu manipulieren:Wie füge ich ein spezifisches Zeichen am Ende der Wörter nur in der ersten Spalte hinzu?

Datei-In -

1 34566 34765 

2 45678 45789 

3 34567 34799 

X 67895 66900 

Y 34567 34890 

Datei aus

1_M 34566 34765 

2_M 45678 45789 

3_M 34567 34799 

X_M 67895 66900 

Y_M 34567 34890 

Danke,

+0

Lesen Sie [fragen] dann tun Sie wie erforderlich, um eine Frage zu stellen. –

+0

Bitte schauen Sie sich [editing-help] (http://stackoverflow.com/editing-help) an. – Cyrus

Antwort

2
$ cat data 
1 34566 34765 
2 45678 45789 
3 34567 34799 
X 67895 66900 
Y 34567 34890 

Mit awk:

$ awk '{print $1 "_M",$2,$3}' data 
1_M 34566 34765 
2_M 45678 45789 
3_M 34567 34799 
X_M 67895 66900 
Y_M 34567 34890 

mit sed:

$ sed 's/^\S*/&_M/' data 
1_M 34566 34765 
2_M 45678 45789 
3_M 34567 34799 
X_M 67895 66900 
Y_M 34567 34890 

Erläuterung:

  1. awk '{print $1 "_M",$2,$3}' data druckt das erste Feld mit "_M" von 2. Feld gefolgt verkettet und dann 3. Feld. Beachten Sie, dass der Verkettungsoperator in awk ein Leerzeichen ist.

Wie für den Befehl sed:

  1. sed 's/^\S*/&_M/' data führt die Stellvertreter (s Befehl) Ersatz
  2. ^\S* =>\s Leerzeichen bedeutet, bedeutet \S non Leerzeichen, * bedeutet 0 oder mehr. ^ ist ein Anker zu sicherzustellen, dass die Übereinstimmung vom Zeilenanfang beginnt.
  3. & in sed bedeutet, dass die gefundenen String
  4. daher kurz gesagt wir ^\S* mit ^\S*_M ersetzen.
+0

Vielen Dank für den Code. Könnten Sie bitte eine Erklärung geben? Ich ging durch SED-Tutorial, um dies auszuarbeiten, konnte aber nicht. Wenn es eine Erklärung gibt, würde es helfen. – everestial007

Verwandte Themen