У меня есть файл (обратите внимание, что некоторые строки содержат более 2 столбцов, также некоторые строки разделены одним пробелом, а некоторые - несколькими пробелами, этот файл довольно большой ...)
file1.txt:
there is a line here that has more than two columns
## this line is a comment
blahblah: blahblahSierraexample7272
foo: foo@foobar.com
nonsense: nonsense59s59S
nonsense: someRandomColumn
.....
У меня есть другой файл, который является подмножеством file1.txt, в этом файле есть только два столбца, а столбцы разделены пробелами «1»!
file2.txt
foo: foo@foo.com
nonsense: nonsense59s59S
Теперь я хотел бы удалить все строки, которые появляются file2.txt из file1.txt, как я могу сделать это в сценарии оболочки? обратите внимание, что второй файл (file2.txt) имеет только два столбца, а file1.txt - несколько ... поэтому, если необходимо выполнить сопоставление, оно должно быть таким: $1(from file2) match $1(from file1)
и $NF(from file2) match $NF(from file1)
, а затем инвертировать сопоставление и print ...
PS уже пробовал grep -vf file2.txt file1.txt
, но поскольку пространство между column1 и $ NF не исправлено, это не сработало ... sed и awk должны сделать трюк, но не могут придумать код ...
sed -i '/^<firstColumnOfFile2> .* <lastColumnOfFile2>$/d' file1.txt (perhaps in a while loop!)
или что-то вроде: grep -vw -f ^[(1stColofFile2)] and also [(lastColOfFile2)]$ file1.txt