Извлечение n символы от тестовой строки

Наконец, я сделал это. от liveCD (Archbang в моем случае) под корнем:

  1. mkdir/mnt/root
  2. смонтируйте-t ext4/dev/sdaX/mnt/root
  3. смонтируйте-t proc ни один/mnt/root/proc
  4. смонтируйте, что-o связывают/dev/mnt/root/dev
  5. chroot/mnt/root/bin/bash
  6. личинка
  7. найдите/boot/grub/stage1
  8. корень (hdX, Y)
  9. установка (hdX)
  10. выход
  11. перезагрузка

Это должно работать. Wiki Archlinux имеет статью, которая объясняет процесс более подробно.

1
10.01.2014, 23:30
3 ответа
file="B1_Site4_5aT4ZNHN691AQSB6B65_KYEC_SLT_2013-11-24-00-30_935985e7_100m_PASS1.tar"

с GNU grep при создании с поддержкой PCRE (и с zsh или последние версии ksh93 или bash для <<<):

grep -oP '(?<=Z).{6}' <<< "$file" > file

с ksh93, bash или последние версии zsh:

tmp=${file#*Z}              # remove chars up to the first Z
echo "${tmp:0:6}" > file

Только для забавы, awk

awk -F Z '{print substr($2, 1, 6)}' <<< "$file"
3
27.01.2020, 23:12
expr B1_Site4_5aT4ZNHN691AQSB6B65_KYEC_SLT_2013-11-24-00-30_935985e7_100m_PASS1.tar : '.*Z\(.\{6\}\)' > file

Или только с оболочкой

string=B1_Site4_5aT4ZNHN691AQSB6B65_KYEC_SLT_2013-11-24-00-30_935985e7_100m_PASS1.tar
printf '%.6s\n' "${string#*Z}" > file

(первый будет считать последний Z сопровождаемым 6 символами, второй первое; поведение будет варьироваться если их не ZXXXXXX там).

3
27.01.2020, 23:12
>>echo \
B1_Site4_5aT4ZNHN691AQSB6B65_KYEC_SLT_2013-11-24-00-30_935985e7_100m_PASS1.tar |
sed 's/.*Z\(.\{6\}\).*/\1/'
>>NHN691

Добавление a >file поместит его в файл.

2
27.01.2020, 23:12
  • 1
    Как Стареющий Динозавр, я верю sed правильный выбор. Однако поместите '|' в конце echo строка, и у Вас нет к обратной косой черте новой строки для продолжения конвейера. –  Bruce Ediger 11.01.2014, 00:03
  • 2
    @BruceEdiger, sed работы над каждой строкой его входа, не целого входа, так так или иначе expr является более соответствующим (echo имеет несколько проблем, связанных с ним также для произвольных данных). –  Stéphane Chazelas 11.01.2014, 00:35

Теги

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