Вам нужна команда systemctl
, а не sysctl
.
systemctl stop docker
Если вы хотите, чтобы он не запускался при загрузке:
systemctl disable docker
Поскольку я не уверен, что вам так сильно нужен код perl
, вот аналогичный код awk
:
awk -F';' -v OFS=';' '{ $NF=""; print }' data.csv
=> Этот код очищает последнее поле каждой строки ( $NF=""
). Поля ввода (-F\;
) и поля вывода (OFS=';'
) считаются разделенными символом ";".
То же самое с sed
:
sed 's/[^;]*$//' data.csv
=> Это заменяет ( s/.../.../
) самая длинная последовательность символов, не являющаяся ";" ( [^;]*
) в конце строки ( $
) без ничего.
То же самое с grep
:
grep -o '.*;' data.csv
=> grep
регулярные выражения по умолчанию являются жадными, что означает, что они соответствуют самой длинной возможной последовательности. Здесь .*;
означает "самая длинная последовательность символов, которая заканчивается знаком ";". Опция -o
выводит то, что совпадает, а не всю строку.
Наконец , эквивалентом perl
будет (спасибо @steeldriver):
perl -F';' -lpe '$F[-1]=""; $_ = join ";", @F' data.csv
=> Он работает аналогично awk
, здесь соединение явно.
Нет разреза?:(
Если вы собираетесь играть с файлами CSV, cut обязательно станет вашим другом:
cut -f 1-3 -d';' semico.csv | xargs -I{} echo {}";"
Разбивка :Вырезать (извлечь )столбцы с 1 по 3, разделенные символом ';' Затем для каждой строки (as cut удалит последний ';', передаст его в xargs и echo line + ;
Конечно, медленнее, чем grep, но в долгосрочной перспективе, вероятно, лучше использовать правильный инструмент для работы
Альтернатива, потому что людям не нравятся xargs :cut -f 1-3 -d';' semico.csv | sed 's/$/;/'
То же самое, но с sed, где вы указываете заменить конец строки на ;