Wie kann ich eine Variable unter Linux suchen und ersetzen?


7

Ich habe eine Reihe von Dateien mit vielen Zeilen wie folgt konfiguriert:

what,r-crq,What,What,VAC5700-035080,What
i,pns11,I,I,VAC5700-035090,I
do,vdd,did,did,VAC5700-035100,did

Ich möchte eine Suche durchführen und ersetzen, um dies zu erreichen, indem ich die 4 Zahlen danach speichere und wieder einfüge VACund den nachfolgenden Teil der VACZahl entferne :

what,r-crq,What,What,VAC5700,What
i,pns11,I,I,VAC5700,I
do,vdd,did,did,VAC5700,did

Gibt es eine Möglichkeit, dies für alle Dateien gleichzeitig zu tun (die VACAnzahl variiert, daher muss sie als Variable gespeichert werden), vorzugsweise in der Bash-Shell?

Ich gehe davon aus, dass ich dies auch in „Notepad ++“ mit Regex tun könnte, aber ich denke, das Shell-Skript wäre vorzuziehen, da ich alle Dateien als Stapel ausführen könnte.


1
Das ist eine anständige Frage. Während Sie in Ihrer Frage „Notepad ++“ erwähnen, ist diese Gesamtfrage in Wirklichkeit für niemanden von Wert, der nach „Notepad ++“ -Elementen sucht.
JakeGould

1
Das heißt, deshalb habe ich das Tag "Notepad ++" entfernt.
JakeGould

Sie sagen: "Die VACAnzahl variiert, daher muss sie als Variable gespeichert werden." Ich verstehe nicht Ich vermute, dass Sie das überdenken - Stevens Antwort sollte tun, was Sie wollen. (Und wenn doch, sollten Sie es akzeptieren .) Aber wenn seine Antwort für Sie nicht funktioniert, deutet dies darauf hin, dass Sie Ihr Problem nicht vollständig, richtig und klar erklärt haben.
Scott

Antworten:


7

Verwenden Sie den sedBefehl:

sed -e 's|,VAC\([0-9][0-9][0-9][0-9]\)-[0-9]*,|,VAC\1,|' inFile > outFile

Es wird ersetzt ,VAC####-#...#,durch ,VAC####,.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.