在Sheet2插入命令按钮并编程如下:
Private Sub CommandButton1_Click()
Dim i1 As Long, i2 As Long
Dim a$, b$
i2 = 2
Do While Range("C" & i2) ""
a$ = ""
b$ = ""
i1 = 1
Do While Worksheets("Sheet1").Range("C" & i1) ""
If Worksheets("sheet1").Range("C" & i1) = Range("C" & i2) Then
a$ = a$ & Worksheets("sheet1").Range("A" & i1) & ";"
b$ = b$ & Worksheets("sheet1").Range("B" & i1) & ";"
End If
i1 = i1 + 1
Loop
If a$ "" Then a$ = Left(a$, Len(a$) - 1)
If b$ "" Then b$ = Left(b$, Len(b$) - 1)
Range("A" & i2) = a$
Range("B" & i2) = b$
i2 = i2 + 1
Loop
End Sub
这行命令可以帮助你删除包含 Merge 的 commit 块(任意多个这样的文字块)
sed -n '/commit/{:a;h;n;/Merge/b;:c;H;n;$bd;/commit/!bc;:d;x;p;x;ba}' log > log.txt
运行效果如下:
我的命令可能复杂了些。稍微解释一下,仅供参考:
其中:a :b :c :d 是命令跳转标签label
1. /commit/{:a;h;n;
当某行找到 commit 时,将此行复制到 hold space,然后读取下一行。
2. /Merge/b;
如果刚刚读取到的新行,包含Merge,则结束对本行的处理,读取下一行,并继续寻找commit
如果刚刚读取到的新行,不包含Merge,那么继续对本行执行后续命令:
3. :c;H;n;$bd;/commit/!bc;:d;x;p;x;ba}
将此行追加到hold space,读取下一行,如果没有到最后一行,并且没有找到commit,那么执行命令bc,跳转到c标签——循环这个过程,直到读取到文件末尾或者读取到包含commit的行。然后,x,将hold space的内容与 pattern space的内容对调,p,输出pattern space的内容(即,不包含Merge的块),x,再次对调,pattern space变成之前的内容(文件末尾或者包含commit的行)。ba,跳转到标签a,继续对此行进行检查,重复步骤1,2,3。
如果上面的命令改为:
sed -n '/commit/{:a;h;n;/Merge/!b;:c;H;n;$bd;/commit/!bc;:d;x;p;x;ba}' log > log.txt
那么,输出结果为,只包含 Merge 的 commit 块
既然有1位数的数据也有4位数的数据,那么如果txt中没有特意的回车,行数和列数不可能确定。如果有回车的话,简单,用
#include
char *strtok( char *str1, const char *str2 );
就能解决。
先用getline()一行读出一个str,并累加行数,然后
char *result = NULL;
char string[100][100];
int x = 0;
result = strtok( str, " ");
while( result != NULL ) {
strcpy(string[x++] , result);
result = strtok( NULL, " " );
}
这样用一个string数组就可以把全部数据保存下来。x记录了总数,然后x除以行数就是列数。
今天有空了,帮你把程序全写出来:
#include
#include
#include
using namespace std;
void main(){
char ch[100] = "
以上是excel判断行符合要的详细内容。更多信息请关注PHP中文网其他相关文章!