Ich muss die Zeichenfolge in jeder Zeile einer Textdatei von Position X bis Position Y löschen
Ich habe eine sehr große flache Akte 100K zeichnet jede auf, die 3000 Spalten überspannt. Ich muss vor der Archivierung ein Segment von der Startposition 300 bis zur Position 500 des Datenfensters entfernen. Dies ist ein sensibler Teil der Daten, die gelöscht werden müssen, bevor ich archivieren kann. Ich suche einen awk oder sed oder einen ähnlichen Befehl, der den Trick für mich tun kann.
Beispieldatei
003133780 MORNING GLORY DR SOUTHAMPTON PA18966780 MORNING GLORY DR
0054381303 MADISON ST RADFORD VA241411303 MADISON ST
00586728 CONESTOGA COURT CHADDS FORD PA1931728 CONESTOGA COURT
1852921800 SAMER RD MILAN MI481601800 SAMER RD
192717175 EVERGREEN CIRCLE HENDERSONVILLE TN37075175 EVERGREEN CIRCLE
213673217 EAST BRANCH LONGVIEW TX75604217 EAST BRANCH
2490423205 NOTTAGE LANE FALLS CHURCH VA220423205 NOTTAGE LANE
249357344 BALOGH PLACE LONGWOOD FL32750344 BALOGH PLACE
2502811224 WILFORD HOLLOW ROAD VINTON VA241791224 WILFORD HOLLOW ROAD
277634210 AMANDA CT WHITEHOUSE TX7579119726 COPPER OAKS DRIVE
282482507 B ST. CHESAPEAKE VA23324507 B ST.
Erwartete Ausgabe
003133780 MORNING GLORY DR SOUTHAMPTON PA780 MORNING GLORY DR
0054381303 MADISON ST RADFORD VA1303 MADISON ST
00586728 CONESTOGA COURT CHADDS FORD PA28 CONESTOGA COURT
1852921800 SAMER RD MILAN MI1800 SAMER RD
192717175 EVERGREEN CIRCLE HENDERSONVILLE TN175 EVERGREEN CIRCLE
213673217 EAST BRANCH LONGVIEW TX217 EAST BRANCH
2490423205 NOTTAGE LANE FALLS CHURCH VA3205 NOTTAGE LANE
249357344 BALOGH PLACE LONGWOOD FL344 BALOGH PLACE
2502811224 WILFORD HOLLOW ROAD VINTON VA1224 WILFORD HOLLOW ROAD
277634210 AMANDA CT WHITEHOUSE TX19726 COPPER OAKS DRIVE
282482507 B ST. CHESAPEAKE VA507 B ST.
Hier habe ich das Zeichen zwischen Position 89 und 95 entfernt. Eine kleine Änderung, ich muss auch den geänderten Inhalt in dieselbe Datei schreiben.
Unten ist das Skript, das ich bisher habe. Ich durchlaufe alle Dateien, teile sie in Dateien mit maximal 20000 Zeilen auf und entferne dann die Zeichen von den Positionen X und Y, bevor ich archiviere.
für aktuellen Dateinamen inls -1 *.[tT][xX][tT]
Geben Sie $ currentfilename tempfilename = $ {currentfilename %%. *} ein. awk -v A = "$ tempfilename" '{filename = A "Teil"int ((NR-1) / 20000)" .txt "; print >> Dateiname} '$ aktuellerDateiname awk' {print substr ($ 0,1,522) substr ($ 0,953) >> Dateiname} '$ aktuellerDateiname mv $ aktuellerDateiname $ APP_ROOT / Archiv fertig