Ich habe Datei, die mehrere Spaltenreihen haben, die nach Anforderung behandelt werden müssen. Ich fand ein Skript, das diese mit Variablen der Fall ist, aber ich möchte dies mit Variablen, die nicht tun, da dies mein Code komplexer machtsed Befehl zum Bearbeiten einer Datei unter mehreren Bedingungen
Datei:
Id,Name,class,Section
1,Dileep,MBA,B
2,Pavan,tenth,C
3,Girish,graduate,D
Meine Ausgabedatei sollte wie folgt sein -
Datei:
Id,Name,Class,Section
1,Dileep,MBA,B
2,Pavan,MCA,C
3,Girish,MBA,D
ich sed Befehl verwendet haben, dies zu tun und unten ist das Skript, das ich für diese erstellt.
#! /bin/sh
file=/tmp/dileep/details.txt
cat $file | sed '/Id,Name,/s/class/**C**lass/g' | tee -a $file
cat $file | sed '/2,Pavan,/s/tenth/**MCA**/g' | tee -a $file
cat $file | sed '/3,Girish,/s/graduate/**MBA**/g' | tee -a $file
Ich bin in der Lage, die erste Linie zu bekommen veränderten den mit Kopf, aber nicht die eigentlichen Daten, das wird hart codierte Daten sein, und ich kann diese Änderung vornehmen.
Können Sie mir bitte sagen, was ich falsch mache und wie ich das korrigieren kann.
Sie vermeiden nicht 'tee' wie diese verwenden können. Sobald die Eingabedatei größer als die von 'tee' verwendete Puffergröße ist, verlieren Sie Ihre Eingabedatei. – hek2mgl
willst du nur 'zehnte' durch' MCA' ersetzen, wenn die Zeile mit '2, Pavan' beginnt? Oder warum machst du '/ 2, Pavan,/s/zehnte/** MCA **/g' und nicht nur' s/zehnte/** MCA **/g'? – hansaplast
Ich würde gerne auf die Bedingung überprüfen, wenn 2, Pavan dann zu MCA ändern, wenn Klasse Zehntel ist, ähnlich für die anderen, muss ich überprüfen, ob der erforderliche Inhalt gefunden wird, dann muss ich es auf den gewünschten Wert ändern – Dileep