Как системному администратору, мне иногда приходилось управлять машинами, которые находятся за сотни или тысячи миль от меня, и все было в порядке, пока я мог подключиться по ssh. удаленный человек с разным уровнем знаний Unix по телефону (и в чате, если мне повезет ). Так что на самом деле довольно похожая ситуация.
Некоторые отличия:
Существуют подходы к удаленному управлению -или -диапазона или удаленному управлению без -ОС -. Это, вероятно, не относится к вашей ситуации, и вы проигнорируете их (выходы для удаленной перезагрузки, последовательные консоли, IP KVM, IPMI и т. д.)
Моя цель, как правило, -восстановить мою способность управлять машиной, после чего я беру на себя управление; ваша цель, вероятно, другая.
Во всяком случае, некоторые общие подходы:
dash dash execute
легче понять, чем dash e
(, легко неправильно понятое вместо -c
или даже-3
). Когда вам нужно расшифровать буквы, используйте фонетический алфавит НАТО или аналогичный. Итак, я бы предложил что-то вроде:
Me: curl space dash capital ell space example dot see [optionally you could put as in Charlie here] oh em slash file dot tee ex tee space dash oh space double-quote path slash to slash something space with space the word spaces (pause) dot tee ex tee double-quote
Them: ok
Me: Just to confirm, you've got the word spaces, plural, typed out before the dot tee ex tee?
Them: yeah
Me: And the dash el is capital, but the dash oh is lowercase, right?
Them: yep
Me: ok, press enter.
⋮
tr '|' '\n'
преобразует каждую вертикальную черту в новую строку и должен помочь.
echo "143|2345|3456|4567|2345|3457|2019-12-28 12:00:01|2019-12-28" | tr '|' '\n'
Или, может быть, в вашем случае вы ищете
cat file | tr '|' '\n' > newfile
Использование ваших исходных данных и GNUhead
:
$ tr '|' '\n' <demo.txt | head -n -2
143
2345
3456
4567
2345
3457
Команда tr
просто изменяет символы|
-на новые строки. Обратите внимание, что tr
считывается только со стандартного ввода, поэтому вам нужно будет перенаправить на него.
Если GNU head
получает отрицательное число строк, оно обрезает это количество строк с конца данных.
В качестве альтернативы, одним вызовомsed
:
$ sed 's/\(|[^|]*\)\{2\}$//; y/|/\n/' demo.txt
143
2345
3456
4567
2345
3457
Здесь подстановка удалит последние два|
-поля с разделителями, сопоставив два|
-символа и строки после каждого, затем команда y
заменит каждое оставшееся |
на новую строку (просто как tr
в первом решении ).
С sed -E
это может быть немного более читаемым (обратите внимание, что теперь мы должны экранировать один из|
-символов):
sed -E 's/(\|[^|]*){2}$//; y/|/\n/' demo.txt
Для работы с несколькими строками и переменным количеством полей удаляется col1 и два последних столбца, а оставшиеся столбцы располагаются вертикально.
awk '-F|' '{ for (f = 2; f <= NF - 2; ++f) print $(f); }' data.txt