Исключить текст между двумя словами в одной строке

Другой аналогичный вариант — использовать/usr/bin/env:

ExecStart=/usr/bin/env "${JAVA_HOME}/bin/java" -jar...

Таким образом, вы можете опустить 'кавычки вокруг всей команды, что полезно, если вам нужно вложить элементы в кавычки.

ПС. В качестве примечания важно заключать имена переменных в фигурные скобки {}в файлах Systemd, иначе они не будут правильно распознаны.

-1
29.12.2019, 12:32
3 ответа

Если это точный текст, то это сработает:

awk -F "|" 'BEGIN{OFS="|"} NR==1 {print $2,$6,$11,$12,$13}' file.txt

Первая часть задает разделитель полей ввода как вертикальную черту, которая представляет собой |с awk -F "|". Затем он печатает этот разделитель полей между каждым полем или столбцом, как вы хотите, в своем выводе BEGIN{OFS="|"}. Затем он печатает эти конкретные столбцы из первой строки или записи NR==1 {print $2,$6,$11,$12,$13}' file.txt.

Выход:

2019-12-23T23:13:24.380000|SURVEY-INGV|1.4|--|5 km E Barberino di Mugello (FI)
3
28.04.2021, 23:26

По крайней мере с GNU cut, либо

cut -d '|' -f 2,6,11-13 text

или

cut -d '|' --complement -f 1,3-5,7-10 text

должно работать.

2
28.04.2021, 23:26
sed "s/\|\{2,\}/|/g" filename| awk '$0 !~/^$/'|awk -F "|" 'OFS="|"{print $2,$6,$8,$9,$10}'

выход

2019-12-23T23:13:24.380000|SURVEY-INGV|1.4|--|5 km E Barberino di Mugello (FI)
2019-12-17T03:40:08.660000|SURVEY-INGV|1.0|--|5 km NE Barberino di Mugello (FI)
2019-12-17T02:42:40.600000|SURVEY-INGV|1.4|--|4 km NE Barberino di Mugello (FI)
2019-12-17T00:19:33.840000|SURVEY-INGV|0.6|--|5 km NE Barberino di Mugello (FI)
2019-12-14T21:47:53.240000|SURVEY-INGV|1.8|--|5 km E Barberino di Mugello (FI)
0
28.04.2021, 23:26

Теги

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