Если я правильно помню, попробуйте использоватьifconfig
:
# ifconfig [network interface] inet [address] netmask [netmask]
Вам понадобится root
, поэтому сначала выполните su -
.
Чтобы подписаться на сообщение @ Кусалананды , если адрес 10.1.2.3
и сетевая маска 255.255.255.0
на сетевом интерфейсе vio0
, вы должны выполнить следующее:
# ifconfig vio0 inet 10.1.2.3 netmask 255.255.255.0
Мы могли бы проанализировать file1
, сопоставить значения($2
)с ключами ($1
), затем проанализировать file2
и добавить значение в строку, когда часть строки($3
)соответствует какому-либо ключу.
BEGIN {OFS = FS = "\t"}
FNR == NR {arr[$1] = $2; next}
{for (x in arr) if ($3 ~ x) {$0 = $0 " " arr[x]; break}}
{print}
Это выводит правильные результаты для вашего примера, но это не то, что вам нужно по многим причинам. Первый из них заключается в том, что он может дать сбой в различных случаях, таких как protein_1.p1
и protein_1.p11
. Вторая причина - производительность, время для каждой строки файла2 не является постоянным, а ~размером file1
.
Таким образом, мы должны изменить приведенный выше сценарий. Вы, вероятно, захотите определить регулярное выражение для строки белка. Таким образом, сопоставление становится достаточно строгим, а также при втором синтаксическом анализе время зависит от сопоставления регулярного выражения в поле, а не от размера массива.
BEGIN {OFS = FS = "\t"; re = "\\<protein_[[:digit:]]+.p[[:digit:]]+\\>"}
FNR == NR {if ($1 ~ re) arr[$1] = $2; next}
match($3, re) {$0 = $0 " " arr[substr($3,RSTART,RLENGTH)]}
{print}
Примечания:
re
:"белок _", за которым следует одна или несколько цифр, ".p" и снова одна или несколько цифр. Все это внутри словесных границ. Точка буквальная. Символы слов [:alnum:]
и _
, поэтому остальные являются границами. file1
. match()
найдено, то встроенные -в переменных RSTART
, RLENGTH
содержат индекс и длину совпадающей строки, и эта подстрока — это то, что мы используем в хеше. Использование:
> awk -f tst.awk file1 file2
chromosome_1 programID transcript_id "protein_1.p1"; parent "protein_1"; note "PJD5F7, match to databaseID=64575, (species X)";
chromosome_1 programID transcript_id "protein_1.p2"; parent "protein_1"; note "PJD5F7, match to databaseID=64575, (species X)";
chromosome_1 programID transcript_id "protein_2.p1"; parent "protein_2";
chromosome_1 programID transcript_id "protein_2.p2"; parent "protein_2";
chromosome_1 programID transcript_id "protein_3.p1"; parent "protein_3"; note "PA5F9H, match to databaseID=93689, (species W)";
chromosome_1 programID transcript_id "protein_4.p1"; parent "protein_4"; note "Q7GT5J, match to databaseID=89045, (species Y)";
chromosome_1 programID transcript_id "protein_4.p2"; parent "protein_4";
chromosome_1 programID transcript_id "protein_4.p3"; parent "protein_4"; note "YE6G3L, match to databaseID=44968, (species Z)";