Если Вы хотите отсоединить процесс от текущей оболочки вместо того, чтобы запустить его как фоновое задание с xdg-open http://www.google.com &
, Мне нравится detach
утилита:
detach xdg-open http://www.google.com
Можно было создать псевдоним для этого. Мне нравится detach
nohup
как закрывает stdin stdout и stderr по умолчанию, таким образом, его вызов является более чистым.
Вы можете использовать линии NL
и используйте Присоединяйтесь
join -o 1.2,2.2 <(nl ABC.txt) <(nl PQR.txt) > OUT.file
Или по CAT -N
join -o 1.2,2.2 <(cat -n ABC.txt) <(cat -n PQR.txt) > OUT.file
, как , аналогичный , анализ двух файлов ввода в / во время петли Вы можете использовать только встроенные вполнения Bash
while read -u 3 a b && read -u 4 c d
do
echo "$a $c"
done 3< ABC.txt 4< PQR.txt >OUT.txt
Предполагая, что поля разделены одним пространством в входных файлах, я бы написал:
paste -d " " ABC.txt PQR.txt | cut -d " " -f 1,3 > Output.txt
обрабатывать произвольные пробелы и более 2 столбцов на файл, и предполагая, что ваша оболочка - это Bash / ksh / zsh (?)
paste -d " " <(awk '{print $1}' ABC.txt) <(awk '{print $1}' PQR.txt) > Output.txt
Вместо этого используйте более низкоуровневую форму копирования файлов путем локального переноса cat
и переноса их в удаленную команду cat > filename
на priv-server
:
$ cat file1.txt | ssh -A user@pub-server 'ssh user@priv-server "cat > file1.txt"'
или со сжатием:
$ gzip -c file1.txt | ssh -A user@pub-server 'ssh user@priv-server "gunzip -c > file1.txt"'
Outtake from man ssh
:
-A Разрешает пересылку соединения агента аутентификации. Это также можно указать для каждого хоста в файле конфигурации.
-t Принудительное псевдо-распределение. Это может быть использовано для выполнения произвольных экранных программ на удаленной машине, которые могут быть очень полезны, например, при реализации услуг меню. Несколько опций -t принудительно распределяют tty, даже если ssh не имеет локального tty.
Я изначально не знал ответа, но после хорошего ночного сна и написания этого вопроса я увидел проблему с командой, которую я пытался первоначально, исправил ее, и она сработала. Но поскольку это кажется полезным делом, я решил поделиться ответом.
-121--105564-Это было бы просто, если бы вы попробовали собственный sshfs , который был недавно добавлен.
Установите sudo apt-get install sshfs
sshfs -ttA user@pub-server ssh user@priv-server
Это сделает магию.
Для получения дополнительной информации см. Журнал Linux
-121--105565-Вот несколько способов:
с помощью paste
и cut
:
$ paste -d '' < (cut -d '-f 1 ABtC.xt) < (cut -d' -f 1
ABC PQR
Если система не поддерживает подстановку процессов, используйте следующее:
$ cut -d '-f 1 ABC.txt >/tmp/aa; cut -d '' -f 1 PQR.txt >/tmp/bb; вставить -d ''/tmp/aa/tmp/bb
Использование awk
(спасибо @ Costas):
awk 'FNR = = NR {a [FNR] = $1; следующий} {печать [FNR], $1} 'ABC.txt PQR.txt > output.txt
Специальная переменная FNR
- номер строки текущего входного файла, а NR
- номер строки ввода в целом, независимо от файла, из которого он получен. Они равны только во время чтения первого входного файла. Таким образом, первые поля первого файла сохраняются в массиве a
( a [FNR] = $1
), ключи которого являются номерами строк, а значения - 1-м полем. Затем, при достижении второго файла, печатаем значение, соответствующее его номеру строки ( a [NR]
) и 1-му полю текущей строки.