Как удалить весь текст перед некоторой строкой

setcap сохраняет заданные возможности в метаданных данного файла (как расширенные атрибуты, см. вики Arch для получения подробной информации):

setcap cap_net_admin+epi /usr/local/sbin/boringtun

означает, что boringtunбудет иметь эти возможности при последующем запуске:

/usr/local/sbin/boringtun --foreground wgnet0

0
18.04.2020, 01:07
5 ответов

Вот один -вкладыш сsed:

sed -n 'H; /^OPERATIONAL SYSTEMS TOMORROW:/h; ${g;p;}' arquivo

Выход:

OPERATIONAL SYSTEMS TOMORROW:
AIX
SOLARIS

Для редактирования файла на месте:

sed -i -n 'H; /^OPERATIONAL SYSTEMS TOMORROW:/h; ${g;p;}' arquivo
2
19.03.2021, 02:28

Вы можете сделать это в чистом sh, используя

${VAR%%string}

Где $VAR содержит текст, который вы хотите обработать

1
19.03.2021, 02:28

С использованием edодного -вкладыша:

printf "%s\n" '?^OPERATIONAL SYSTEMS TOMORROW:$?,$w' | ed -s arquivo

или с exвместо:

ex -sc '?^OPERATIONAL SYSTEMS TOMORROW:$?,$wq!' input.txt

эти re w rite arquivoдля сохранения только всего от последней совпадающей строки до конца файла.

Использование ориентированного на файл -инструмента, такого как edили ex, вместо ориентированного на поток -инструмента, такого как sedили awk, значительно упрощает многие не -тривиальные задачи автоматического редактирования, поскольку они может выполнять такие действия, как поиск в обратном направлении от позиции курсора.

2
19.03.2021, 02:28

Поменяйте местами строки в файле, получите первые несколько строк, затем снова поменяйте их местами:

$ tac file | sed '/OPERATIONAL SYSTEMS TOMORROW:/q' | tac
OPERATIONAL SYSTEMS TOMORROW:
AIX
SOLARIS

Возможно, это было бы неэффективно , но это просто, а значит понятно и удобно в сопровождении.

Утилита tacявляется частью GNU coreutils.

2
19.03.2021, 02:28

Использование perl (может быть быстрее, чем awk и sed):

$ cat temp.txt
OPERATIONAL SYSTEMS:
Windows
MAC OS
OPERATIONAL SYSTEMS TOMORROW:
Linux
Xubunto
Extra
OPERATIONAL SYSTEMS:
Windows
MAC OS
OPERATIONAL SYSTEMS TOMORROW:
AIX
SOLARIS  

Выполнить:

$ perl -ne ' {
  if ( $_ =~ /(OPERATIONAL SYSTEMS TOMORROW:)/ ) {$found=1;$index=0;}
  if($found ) {$index++; $a[$index]=$_;} $last_index=$index;}
  END {
  for($i=1;$i<=$index;$i++){ print $a[$i];}
  } ' temp.txt
1
19.03.2021, 02:28

Теги

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