Решено
примеры работают при изменении строки
$(ARCH) $(ARCHFLAGS) $@ $?
на
$(ARCH) $(ARCHFLAGS) $@ $(addprefix NoOMP/,$?)
. Выше я исключил это решение, но мое испытание основано на $ ^
вместо $?
. В то время как первый будет перестраивать весь архив из старого и нового файлов% .o, последний обновит только существующий архив новыми файлами% .o. При перестроении всего архива из старых и новых файлов% .o старые файлы% .o будут иметь неправильный префикс, а новые - правильные. Таким образом, исключение старых файлов% .o путем обновления архива вновь скомпилированными файлами% .o позволяет обойти эту проблему.
Приветствую
Ваш сценарий AWK почти готов:
awk -F'|' 'NR==FNR{c[$1]++;next};c[$1] > 0' file1 file2 > output.txt
работает, после изменения окончания строки с Mac на Unix:
tr '\r' '\n' < file1 > file1.new
mv file1.new file1
tr '\r' '\n' < file2 > file2.new
mv file2.new file2
$ 1
- это первое поле в AWK.
Вместо c [$ 1]> 0
вы можете написать c [$ 1]
. > 0
не требуется: работает любое ненулевое значение, поэтому мы могли бы также напрямую использовать содержимое c
:
awk -F'|' 'NR==FNR{c[$1]++;next};c[$1]' file1 file2 > output.txt
попробуйте эту команду awk.
bash-4.1$ cat file1
1
3
bash-4.1$ cat file2
1|A|B
1|C|D
2|E|F
3|G|H
bash-4.1$ awk -F\| 'NR==FNR{F1[$0];next}$1 in F1{print}' file1 file2
1|A|B
1|C|D
3|G|H
Вы уже пробовали присоединиться к
?
$ tail -n +1 -- file1 file2
==> file1 <==
AT1G56430
AT3G55190
AT3G22880
==> file2 <==
AT1G01010|GO:0043090|RCA
AT1G56430|GO:0010233|IGI
AT1G56430|GO:0009555|IGI
AT1G56430|GO:0030418|IGI
$ join -t'|' file1 file2
AT1G56430|GO:0010233|IGI
AT1G56430|GO:0009555|IGI
AT1G56430|GO:0030418|IGI