Извлекая часть строк с определенным шаблоном с помощью awk, sed

Попытайтесь использовать losetup команда для создания файла изображения читаемым спрашивает диск так, чтобы можно было скопировать разделы с него непосредственно к жесткому диску:

  • Выполненный sudo losetup -f проверять следующее доступное устройство закольцовывания (это возвратит loopx, где x является следующим циклическим устройством).

  • Выполненный sudo losetup /dev/loopx whereyourimgfileis

  • Теперь Вам смонтировали .img файл как блочное устройство, таким образом, можно открыть его с GParted (или дополнительно другой редактор раздела по Вашему выбору; однако, я думаю (GParted является лучшим):

  • Выполненный sudo gparted /dev/loopx /dev/sda

  • Теперь скопируйте эти два раздела от/dev/loopx до расширенного раздела на Вашем жестком диске (sda). Вы, вероятно, уже знаете, что строка конфигурации grub2 включает /etc/grub/d/40_custom загружать его:

menuentry "ChromiumOS" {

insmod ext2

корень набора = (hd0, x)

тихий linux/boot/vmlinuz root=LABEL=C-ROOT rw noresume noswap i915.modeset=1 loglevel=1

initrd/boot/initrd.img

}

18
11.11.2014, 12:40
3 ответа

с командой GREP:

grep -oP 'sum=\K.*' inpufile > outputfile

GREP с -P (Perl-Regexp) Parameter поддерживает \ k , которые используют для игнорирования ранее соответствия символы.

С помощью команды awk:

awk -F"=" '{print $NF}' inputfile > outputfile

awk NF дает вам общее количество полей в записи / строке. Таким образом, последнее значение это последнее число поле в записи / строке.

С Sed Command:

sed 's/^.*sum=//' inpufile > outputfile

^. * = Сумма Заменить все символы (. * ) между началом строки ( ^ ) и последних символов ( SUM = ) с пробелом чар.

Результат:

-6.97168e-09
6.97168e-09
-5.12623e-12
5.12623e-12
-6.936e-09
6.97169e-09
-5.1e-12
5.12624e-12

Если вы хотите сохранить каждое значение в отдельный файл, используйте выше команды в цикл While While:

while read line; do
    echo "$line" | grep -oP 'sum=\K.*'     > $(echo "$line" |awk '{print $2}');
   #echo "$line" | awk -F"=" '{print $NF}' > $(echo "$line" |awk '{print $2}');
   #echo "#line" | sed 's/^.*sum=//'       > $(echo "$line" |awk '{print $2}');
done < file
26
27.01.2020, 19:46

Если я правильно понимаю вопрос, который вы хотите Получите только значения после = и храните эти значения в отдельных файлах, на основе второго поля (?). Если я правильно, попробуйте что-то вроде этого:

$ awk -F'[ =]' '{print $6>"file_"$2".txt"}' file

Результат:

$ ls -1
  file_leftWallPhi.txt
  file_leftWallUSf.txt
  file_leftWallrhoPhi.txt
  file_leftWallrhoUSf.txt
  file_loweWallrhoPhi.txt
  file_loweWallrhoUSf.txt
  file_lowerWallPhi.txt
  file_lowerWallUSf.txt

$ cat  file_leftWallPhi.txt
  5.12623e-12
6
27.01.2020, 19:46

можно сделать это sed

sed -E 's/^.* (\S+)\s*:.*=(\S+)/echo "\2" > "\1".txt/' file | bash

, сценарий узнает две шт. в строке:

  1. между пробелами и : и должен содержать некоторых (более затем 0) несимволы пробела;
  2. некоторые (более затем 0) несимволы пробела после = ;

и формат от в команде выполнения, которая передала через канал удар

1
27.01.2020, 19:46

Теги

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