Заполните пустые строки в определенном столбце значениями

Вы перепутываете два различных случая:

  • foo ; bar будет выполнять нечто, ожидать его, чтобы закончить и затем управлять баром
  • foo & bar запустит нечто, поместит его в фон и запустит панель непосредственно впоследствии.

Необходимо решить, или использовать тот или другой. Вы не можете сделать обоих.;)

Для решения Вас проблема можно просто выполнить все задания в фоне и затем использовать job перечислять pids:

michas@lenny:~$ sleep 10 &
[1] 18007
michas@lenny:~$ sleep 10 &
[2] 18011
michas@lenny:~$ sleep 10 &
[3] 18015
michas@lenny:~$ sleep 10 &
[4] 18019
michas@lenny:~$ sleep 10 &
[5] 18026
michas@lenny:~$ jobs -p
18007
18011
18015
18019
18026
michas@lenny:~$ 

Вам также не обязательно нужен pids для отправки сигналов уничтожения. Например, kill %1 уничтожит первый фоновый процесс.

3
13.08.2015, 15:19
4 ответа

Если ваши данные выражены в столбцах фиксированной ширины, вы можете сделать:

Для первого случая:

sed 's/^.\{4\}$/& -9/'

(добавить " -9" к 4-символьным строкам).

Для второго случая:

sed -e '/.\{11\}/b' -e 's/$/          /;s/\(.\{10\}\).*/\1-9/'

(добавить до 10 пробелов и -9 к строкам менее 11 символов).

Обычно для разбора строк с полями фиксированной ширины см. специальную переменную GNU awk FIELDWIDTHS.

4
27.01.2020, 21:16

С GNU sed

sed ':;s/^.\{0,9\}$/& /;t;s/^.\{10\}$/&-9/' file

Добавляет один пробел, пока количество символов меньше десяти, используя тест т .
Затем заменяет строки с десятью символами на себя и -9.

1
27.01.2020, 21:16

При наличии доступа root к компьютеру можно записать процедуру установки. Я сделал несколько предположений, так как доступность apt-get

#script, saved local, executed on ssh server:

#install tools:
apt-get -y install tool1 tool2 
#be careful with the -y option, though

#new zsh tools:
#load standard .zshrc file
echo . /home/user/.zshrc > /home/user/.additional_zsh_rc
#add alias
echo alias faster=\'than this long command\' > /home/user/.additional_zsh_rc

#new vimrc
echo "vim settings" > /home/user/.vimrc 

#make sure to change ownerships as we are running this script as root
chown user:user /home/user/.additional_zsh_rc
chown user:user /home/user/.vimrc

Теперь, когда мы запустим сценарий как root для установки

ssh root@server "/bin/zsh -s" <install_script

ТОГДА мы можем войти в систему как пользователь (после выполнения сценария вы автоматически выйдете из системы как root). Обратите внимание, что нам придется изменить наш стандартный файл rcfile на новый с помощью -rcs (не стесняйтесь изменять источник или весь файл .zshrc , в моем примере новый файл rcfile также является источником стандартного файла .zshrc )

ssh user@host "/bin/zsh --rcs /home/user/.additional_zsh_rc"

Теперь можно также поместить обе команды ssh в сценарий, так что вам не нужно будет выполнять их вручную каждый раз. Для запуска без паролей используйте пароль ssh-login, но помните об опасностях, когда кто-то имеет доступ к удаленным машинам без пароля после кражи компьютера.

-121--185382-

Вы можете попробовать установить nix с помощью PRoot . Можно также создать для пользовательского префикса:

NIX_STORE_DIR=/opt/custom/store \
NIX_STATE_DIR=/opt/custom/var/nix \
NIX_DB_DIR=/opt/custom/var/nix/db \
    nix-build ...
-121--74050-

Можно использовать следующую команду:

perl -ane 'if(!$F[1]){print $F[0]," -9\n"}else{print $_;}'

Эта команда считывает входные данные по строкам и печатает «-9» во втором столбце, если он пуст.

echo "2342 1
6473 2
7463 2
3647
2734 1
9343" | perl -ane 'if(!$F[1]){print $F[0]," -9\n"}else{print $_;}'

2342 1
6473 2
7463 2
3647 -9
2734 1
9343 -9
0
27.01.2020, 21:16

Вы можете попробовать этот awk в своем первом примере:

awk 'NF == 1 { $2 = -9; } 1' file

Как упоминалось в других сообщениях с gawk , вы можете использовать FIELDWIDTHS , так что вы можете попробовать это со своим вторым:

gawk 'BEGIN { FIELDWIDTHS = "4 1 1 1 2 1 1"} { for (i = 1; i <= NF; i++) { if ($i == "") { if (i == 7) $i = "-9"; else $i = " "; } } printf("%s %s %s %s\n", $1, $3, $5, $7); }' file
0
27.01.2020, 21:16

Теги

Похожие вопросы