Изменить команду awk, чтобы игнорировать конкретный шаблон линии - PullRequest
0 голосов
/ 28 февраля 2019

Я использую команду awk для фильтрации дублирующихся строк, мне нравится, что она быстрая и чистая.Однако мне нужно, чтобы он игнорировал строки, которые содержат только (и только - потому что некоторые строки содержат знаки + и другие вещи, и я хочу, чтобы они все еще проверялись на дублирование), плюс, то есть +

Я могу сделать этоиспользуя дополнительные строки кода и некоторые временные файлы, но .. Как я могу отредактировать эту однострочную команду, чтобы сделать это?так что я могу держать его в чистоте и быстро.

Текущий код фильтрует любую строку, которая является дубликатом другой строки в любом месте другого файла, это здорово, но может игнорировать + только строки

Это код:

awk 'NR==FNR{a[$0]=1;next}!a[$0]' file2 file1 > FilteredFile

file1:

1234  
+      
adcs   
abba   
+  
542221   
+  
jabba   

file2:

jingle  
1234      
+  
haad  
+    
rigor     
abba     
wiggle    
+  
542221     
jabba 

вывод:

jingle  
+       
haad    
+  
rigor   
+     
wiggle  

1 Ответ

0 голосов
/ 28 февраля 2019

РЕДАКТИРОВАТЬ: Поскольку OP добавил больше деталей, поэтому добавьте это решение сейчас.

awk 'FNR==NR && $0!="+"{a[$0];next} !($0 in a)'  file1 file2


Я не уверен, почему выиспользуем FNR==NR, это условие, когда мы читаем 2 или более файлов Input_file, которые мы читаем.Итак, я предполагаю, что вам нужно получить уникальные значения вместе с удалением строк, в которых есть +, если я правильно понял, то не могли бы вы попробовать следующее.

awk '$0!="+" && !a[$0]++' Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...