我有两个几乎相同的文件,相同数量的行,这是一个代码。
我正在尝试创建这两个文件之间的公共行的文件,并且还有空行,其中行不同。
我尝试使用comm
,它运行良好,但没有提供我在坏线上需要的空白行,它只是消除了行,公共文件更短(行数)。
这就是我的尝试:
comm -1 -2 file1 file2
答案 0 :(得分:1)
char line[80];
int i = 0;
*antal_varor = 0;
while(fgets(line, sizeof(line), ange_filnamn) != NULL) {
if(strncmp(line, "varor ", 6) == 0) {
sscanf(line, "varor %d:", &i);
if(i >= MAX) {
fprintf(stderr, "warning: index in file too large\n");
i = 0;
continue;
}
if(i + 1 > *antal_varor) *antal_varor = i + 1;
} else if(strncmp(line, " itemnumber:", 12) == 0) {
sscanf(line, " itemnumber: %d", &varor[i].itemnumber);
} else if(strncmp(line, " name:", 6) == 0) {
sscanf(line, " name: %s", varor[i].name);
} else if(strncmp(line, " balance:", 9) == 0) {
sscanf(line, " balance: %d", &varor[i].balance);
} else {
fprintf(stderr, "warning: unrecognized line in file\n");
}
}
printf("\nNumber of items: %d \n",*antal_varor);
fclose(ange_filnamn);
需要排序的文件。所以,你可以使用这样的命令替换:
comm
如果你想跳过空行(空格),那么:
comm -12 <(sort file1) <(sort file2)
要跳过包含空格或制表符的空行:
comm -12 <(grep -Ev '^[ ]+$' file1 | sort) <(grep -Ev '^[ ]+$' file2 | sort)