Работа со столбцами - awk и sed

Возьмите Debian и поместите dc3dd двоичный файл в initrd архив. Затем Вам не нужен раздел Linux вообще, просто основные файлы для USB, загружающегося на FAT.

4
26.07.2012, 02:10
2 ответа

Просто используйте awk непосредственно:

awk '/\/g/ {
        gsub(/\./, "", $2)
        gsub(/../, "&:", $2)
        sub(/:$/, "", $2) 
        print $2,$3
}'

С этим решением Вам не нужно grep ни sed.

6
27.01.2020, 20:47
  • 1
    Это является потрясающим! Работавший отлично.Спасибо!!!! Извините, что задал другой немой вопрос. делает второй gsub с "и": положить точку с запятой на корректное место? Я просто пытался выяснить цель "и". и последний sub удаляет запаздывающую точку с запятой, которая перенесена? –  bourne 26.07.2012, 05:25
  • 2
    @bourne Вы правы - видит gnu.org/software/gawk/manual/html_node/String-Functions.html If the special character ‘&’ appears in replacement, it stands for the precise substring that was matched by regexp. –  Ulrich Dangel 26.07.2012, 06:07
  • 3
    Спасибо за объяснение. Я начинаю понимать это немного больше. Мой друг на самом деле создал немного сценария для тестирования использования '&', и это заставляет его иметь больше смысла. Еще раз спасибо! –  bourne 26.07.2012, 23:08

Только sed пример:

sed -r '\=1/g23=!d;
        s/[^ ]* *//;
        s/ *[^ ]* *$//;
        s/(..)\.(..)/:\1:\2:/g;
        s/::/:/'

Если Ваш вход содержит вкладки вместо пробелов, необходимо скорректировать выражения.

5
27.01.2020, 20:47
  • 1
    Ничего себе, здорово. Большое спасибо за ответ. У меня было что-то вроде более трудного времени после этого так, я думаю, что мог бы использовать awk. Но я собираюсь попытаться выяснить, как Вы сделали это с помощью этого sed выражения! Еще раз спасибо –  bourne 26.07.2012, 05:21
  • 2
    @bourne: Вот другой, чтобы Вы удались :)... $x и $d должны только избежать части помехи в regex; и это обслуживает любое значение порта/переключателя. Если они - шестнадцатеричные цифры, просто изменяют $d для удовлетворения... x='(..)'; d='[0-9]+'; sed -rn "/$d\/g$d/{ s/\S+\s+$x$x\.$x$x\.$x$x\s+($d\/g$d).*/\1:\2:\3:\4:\5:\6 \7/p }" file –  Peter.O 26.07.2012, 08:45
  • 3
    @Peter. O Потрясающее спасибо! Я узнаю тонну о том, как sed и awk работают от этого потока! Я буду работать и через Ваш предложения и через предложения choroba, таким образом, я смогу понять их лучше! –  bourne 26.07.2012, 22:22

Теги

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