Wikipedia:Reference desk/Archives/Computing/2020 December 14

Computing desk
< December 13 << Nov | December | Jan >> Current desk >
Welcome to the Wikipedia Computing Reference Desk Archives
The page you are currently viewing is a transcluded archive page. While you can leave answers for any questions shown below, please ask new questions on one of the current reference desk pages.


December 14

edit

difference of files

edit

Is there a Unix command that can compare two sorted files and output only those lines that are in file A and not in file B? (If not, I can easily write a Python program to do it.) —Tamfang (talk) 02:10, 14 December 2020 (UTC)[reply]

Do you want to see lines from B that are not in A? RudolfRed (talk) 03:44, 14 December 2020 (UTC)[reply]
You can use the comm command: comm -23 A B Graeme Bartlett (talk) 04:17, 14 December 2020 (UTC)[reply]
If the lines in file A are not unique, you may still see lines that are in file B but with a lower multiplicity. It is a bit like bag subtraction. If the multiplicity of a line in file A equals mA and that in file B is mB, then the number in the output is equal to 0 if mAmB, and is mAmB otherwise (truncated subtraction).  --Lambiam 12:22, 14 December 2020 (UTC)[reply]
Good point. If that's an issue and you really want lines in A that are not in B at all, you can strip out the duplicate lines using uniq (or by using sort -u in the first place) before comparing the files. But then you won't know how many times each line that is not in B occurs in A. You may prefer to use fgrep -v -x -f B A (also known as grep -F -v -x -f B A). However, this method does not take advantage of the files being sorted, so it needs to hold the whole of file B in memory while it runs through file A, which may be problematic if B is a large file. --174.95.161.129 (talk) 21:43, 14 December 2020 (UTC)[reply]
I am not sure that is a valid concern anymore, with mmap(2). Elizium23 (talk) 21:49, 14 December 2020 (UTC)[reply]
"May" be. --174.95.161.129 (talk) 22:20, 14 December 2020 (UTC)[reply]
Thank you, comm did the trick – once I made sure the files were sorted the same way! —Tamfang (talk) 03:11, 15 December 2020 (UTC)[reply]

how to set make file to compile by c11 standards?

edit

I'm trying to compile my file with the following makefile:

obj-m := message_slot.o KDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) CFLAGS=-O3 -std=c++0x -pg -D_DEBUG -g -c -Wall

all: $(MAKE) -C $(KDIR) M=$(PWD) modules


clean: $(MAKE) -C $(KDIR) M=$(PWD) clean

But I keep this getting this error:

/home/eran/CLionProjects/tau_os_ex3/message_slot.c:29:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] How can I set the standard to c11 for good? --Exx8 (talk) 22:57, 14 December 2020 (UTC)[reply]

@Exx8: According to [1] use -std=c11. RudolfRed (talk) 01:09, 15 December 2020 (UTC)[reply]