У меня есть файл с именем main_file с переменным количеством столбцов.Первые два столбца main_file всегда имеют одинаковое количество символов и одинаковый разделитель полей, а затем появляется различная информация.Информация в остальной части строки может быть чем угодно, включая те же, что и в первых столбцах, поэтому я не могу просто выполнить поиск строки.Строки также не обязательно уникальны.
aaaa A --------- fdsfadf
aaaa B --------- fasdfa
bbbb A --------- hgfhf
bbbb B --------- hftret jhtruyr
1ulm A --------- tret aaaa A
1ulm X --------- fsdfs fdsfs
1ulm B --------- yttertre ertre
cccc A --------- sdfsa mjhhfdgdf
cccc B --------- werwfds fsa wrew
cccc P --------- fsda wrewr
ghh1 A --------- rwerw wrew
ghh1 G --------- werwe bbbb B
ghh2 A --------- Pewrew trerew rwew
ghh2 G --------- fdss rewrw8
ghh4 A --------- qweqe 321313
ghh4 G --------- 3242 wrewrw
aaaa B --------- fasdfa erwrew
У меня есть файл с именем code_list, который содержит все записи, которые необходимо удалить из файла.
aaaa A
aaaa B
bbbb A
bbbb B
cccc A
cccc B
cccc P
Я хотел быудалить или закомментировать из main_file все строки, в которых есть записи из code_list
Так что я хотел бы получить (в том же порядке):
* aaaa A --------- fdsfadf
* aaaa B --------- fasdfa
* bbbb A --------- hgfhf
* bbbb B --------- hftret jhtruyr
1ulm A --------- tret aaaa A
1ulm X --------- fsdfs fdsfs
1ulm B --------- yttertre ertre
* cccc A --------- sdfsa mjhhfdgdf
* cccc B --------- werwfds fsa wrew
* cccc P --------- fsda wrewr
ghh1 A --------- rwerw wrew
ghh1 G --------- werwe bbbb B
ghh2 A --------- Pewrew trerew rwew
ghh2 G --------- fdss rewrw8
ghh4 A --------- qweqe 321313
ghh4 G --------- 3242 wrewrw
* aaaa B --------- fasdfa erwrew
или получить:
1ulm A --------- tret utrtry
1ulm X --------- fsdfs fdsfs
1ulm B --------- yttertre ertre
ghh1 A --------- rwerw wrew
ghh1 G --------- werwe lkjl
ghh2 A --------- Pewrew trerew rwew
ghh2 G --------- fdss rewrw8
ghh4 A --------- qweqe 321313
ghh4 G --------- 3242 wrewrw
Я пытался запустить myscript.sh code_list
, где myscript.sh:
#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
awk '{if(substr($0,2,7) == "'$line'") {print "*"$0}else{print $0}}' main_file > out
done < "$1"
, но я получаю сообщение об ошибке "неопределенная строка", когда я пытался
awk '{if(substr($0,2,7) == "aaaa A") {print "*"$0}else{print $0}}' main_file > out
тогда все работает.Но файл code_list слишком длинный, чтобы я мог писать вручную каждое имя, и я не смог установить его как переменную.
Каков наилучший способ удалить или закомментировать эти строки