Fügen Sie die Befehlsschaltfläche in Sheet2 ein und programmieren Sie sie wie folgt:
Private Sub CommandButton1_Click()
Dimmen Sie i1 so lange, i2 so lang
Dim a$, b$
i2 = 2
Do While Range("C" & i2) ""
a$ = ""
b$ = ""
i1 = 1
Do While Worksheets("Sheet1").Range("C" & i1) ""
Wenn Worksheets("sheet1").Range("C" & i1) = Range("C" & i2) Then
a$ = a$ & Worksheets("sheet1").Range("A" & i1) & ";"
b$ = b$ & Worksheets("sheet1").Range("B" & i1) & ";"
Ende wenn
i1 = i1 + 1
Schleife
Wenn a$ "" Dann a$ = Left(a$, Len(a$) - 1)
Wenn b$ "" Dann ist b$ = Left(b$, Len(b$) - 1)
Range("A"& i2) = a$
Range("B"& i2) = b$
i2 = i2 + 1
Schleife
End Sub
Diese Befehlszeile kann Ihnen dabei helfen, den Commit-Block zu löschen, der „Merge“ enthält (mehrere solcher Textblöcke)
sed -n '/commit/{:a;h;n;/Merge/b;:c;H;n;$bd;/commit/!bc;:d;x;p;x;ba}' log > log.txt
Der Betriebseffekt ist wie folgt:
Mein Befehl ist möglicherweise etwas kompliziert. Eine kleine Erklärung, nur als Referenz:
Unter ihnen: a :b :c :d ist die Befehlssprungmarke label
1. /commit/{:a;h;n;
Wenn eine Commit-Zeile gefunden wird, kopieren Sie diese Zeile in den Haltebereich und lesen Sie die nächste Zeile.
2. /Zusammenführen/b;
Wenn die gerade gelesene neue Zeile „Merge“ enthält, beenden Sie die Verarbeitung dieser Zeile, lesen Sie die nächste Zeile und suchen Sie weiter nach „Commit“
Wenn die gerade gelesene neue Zeile nicht Merge enthält, fahren Sie mit der Ausführung nachfolgender Befehle in dieser Zeile fort:
3. :c;H;n;$bd;/commit/!bc;:d;x;p;x;ba}
Fügen Sie diese Zeile an den Haltebereich an und lesen Sie die nächste Zeile. Wenn die letzte Zeile nicht erreicht ist und kein Commit gefunden wird, führen Sie den Befehl bc aus und springen Sie zum c-Label – wiederholen Sie diesen Vorgang, bis das Ende der Datei gelesen ist oder lesen Sie „Gehe zu der Zeile, die „Commit“ enthält. Dann tauscht x den Inhalt des Halteraums mit dem Inhalt des Musterraums aus, p gibt den Inhalt des Musterraums aus (d. h. den Block, der die Zusammenführung nicht enthält), x tauscht ihn erneut aus und der Der Musterraum wird zum vorherigen Inhalt (das Ende der Datei oder enthält die Festschreibungszeile). ba, springen Sie zur Beschriftung a, überprüfen Sie diese Zeile weiter und wiederholen Sie die Schritte 1, 2 und 3.
Wenn der obige Befehl geändert wird in:
sed -n '/commit/{:a;h;n;/Merge/!b;:c;H;n;$bd;/commit/!bc;:d;x;p;x;ba}' log > log.txt
Dann ist das Ausgabeergebnis nur der Commit-Block, der Merge enthält
Da es 1-stellige und 4-stellige Daten gibt, kann die Anzahl der Zeilen und Spalten nicht bestimmt werden, wenn im txt kein spezieller Wagenrücklauf vorhanden ist. Wenn es einen Wagenrücklauf gibt, verwenden Sie einfach
#include
char *strtok( char *str1, const char *str2 );
Es wird gelöst.
Erst mit getline() einen String pro Zeile auslesen und die Anzahl der Zeilen addieren, dann
char *result = NULL;
char string[100][100];
int x = 0;
result = strtok( str, " ");
while( result != NULL ) {
strcpy(string[x++] , result);
result = strtok( NULL, " " );
}
Auf diese Weise können alle Daten mithilfe eines String-Arrays gespeichert werden. x zeichnet die Gesamtzahl auf, dann ist x dividiert durch die Anzahl der Zeilen die Anzahl der Spalten.
Ich habe heute Zeit, ich helfe dir beim Ausarbeiten des gesamten Programms:
#include
#include
#include
using namespace std;
void main(){
char ch[100] = "
char b[100][100];int x=0,y=0;
ifstream fin("123.txt",ios::in);
fin.getline(ch,100);
while(!fin.eof()){
++x;
cout char *result = NULL;
result = strtok(ch,",");
while( result != NULL ) {
strcpy(b[y++],result);
cout result = strtok( NULL, "," );
}
memset(ch,0,100);
fin.getline(ch,100);
}
fin.close();
}
//Es wurde schon einmal ausgeführt, kein Problem, b[100][100] sind alle Elemente, x ist die Anzahl der Zeilen, y/x ist die Anzahl der Spalten.
Das obige ist der detaillierte Inhalt vonExcel stellt fest, dass die Zeilen die Anforderungen erfüllen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!