Нет, вам не нужно входить в систему, чтобы запустить процесс, работающий от имени данного пользователя. Вход в систему — это пространственная конструкция пользователя -; ядро не заботится об этом. Есть несколько примеров этого; например, задания cron могут выполняться от имени любого пользователя, даже если этот пользователь не входит в систему.
Для ответов на ваши конкретные вопросы:
init
запустить процесс, к счастью, (представьте, что в противном случае вы управляете парком из тысяч серверов и миллионов виртуальных машин ); Как уже прокомментировал @steeldriver, поля в ваших данных, кажется, не разделены =
, поэтому установка разделителя полейFS
()на это значение с использованием этого назначения -F=
приведет к случайному выводу.
Кроме того, я не вижу, что поля 20
и 31
— это то, что вам нужно, даже если вы используете разделитель полей по умолчанию (пробелы ).
Определение нужных полей в этом файле длинными строками — это задача для программы. Сначала используйте awk, чтобы увидеть, что есть в этих строках. Сначала лучше просмотрите и поймите этот файл, а затем решите, какую команду вы хотите выполнить. Подсчет полей вручную (на глаз )для таких длинных строк затруднен.
Например, проверьте только первую строку. Бег
awk 'NR==1 {for (i=1;i<=NF;i++) print i, $i}' file
даст вам индекс поля и значение для всего содержимого:
1 chr15_pilon_pilon.g1.t1
2 XP_016515887.1
3 XP_016515887.1
4 PREDICTED:
5 uncharacterized
6 protein
7 LOC107832536
8 [Nicotiana
9 tabacum]
10 2.7e-36
11 161.4
12 407
13 95
14 200
15 1
16 94
17 88
18 181
19 MKVAEMRMLRWMCGHTRLDKIKNEVIREKVGVAPVEEKMREATLRWFGNVRRRSPDAPVRNCERLEIVGGRRDRGRPKKYWGELIRQDRTRMQV
20 MKVAEMRMLRWMCGLTRLDKIKNEVIREKVGVAPVDEKMREARLMWFGHVRRRSPDAPVRSCERLAVVGASRGRGRPKRYWGEVIRQDMAKMRI
21 MKVAEMRMLRWMCGHTRLDKIKNEVIREKVGVAPVEEKMREATLRWFGNVRRRSPDAPVRNCERLEIVGGRRDRGRPKKYWGELIRQDRTRMQV*
22 MNFHLQDGIEKGLVENDKKDHGEDERNDHEQDGRNDHVEVEPLAMTHETWKTELQVCLKGKFYKAVVRPAMLYGVECWPVKNSHVQRMKVAEMRMLRWMCGLTRLDKIKNEVIREKVGVAPVDEKMREARLMWFGHVRRRSPDAPVRSCERLAVVGASRGRGRPKRYWGEVIRQDMAKMRISEDMTLDRKVWRSSIRVVG
23 161.4
24 407
25 94
26 80.9
27 76
28 18
29 85
30 0
31 0
32 90.4
33 0
34 14HL20ED6TR1RM3NH11NS4EAIV2GARS1DG5KR4LV4RMTARK1QRVI
35 80.9
36 2.7e-36
37 98.9
Или то же самое, чтобы получить индекс и значение полей только для числовых значений:
awk 'NR==1 {for (i=1;i<=NF;i++) if ($i==$i+0) print i, $i}' file
10 2.7e-36
11 161.4
12 407
13 95
14 200
15 1
16 94
17 88
18 181
23 161.4
24 407
25 94
26 80.9
27 76
28 18
29 85
30 0
31 0
32 90.4
33 0
35 80.9
36 2.7e-36
37 98.9
Обратите внимание, что проверка $i+0 == $i
— это стандартная идиома awk для проверки того, является ли поле числовым значением.
Теперь вы видите свои данные. Вы можете распечатать некоторые поля для большего количества строк, если вам нужно. Вы можете решить и сформировать свою команду в соответствии с вашими потребностями.