Как я могу использовать bash для анализа только раздела переменной с разными разделителями? - PullRequest
0 голосов
/ 04 декабря 2009

У меня есть цикл в bash-файле, чтобы показать мне все файлы в каталоге, каждый в качестве своей собственной переменной. Мне нужно взять эту переменную (имя файла) и разобрать только ее часть.

Пример:

92378478234978ehbWHATIWANT # 98712398712398723

Теперь, предполагая, что "ehb" и символ фунта никогда не меняются, как я могу просто записать WHATIWANT в его собственную переменную?


Пока у меня есть:

#!/bin/bash
for FILENAME in `dir -d *` ; do

done

Ответы [ 3 ]

6 голосов
/ 04 декабря 2009

Вы можете использовать sed для редактирования ненужных частей.

want=$(echo "$FILENAME" | sed -e 's/.*ehb\(.*\)#.*/\1/')

Или вы можете использовать расширение параметров Bash, чтобы убрать хвост и голову.

want=${FILENAME%#*}; want=${want#*ehb}
0 голосов
/ 04 декабря 2009

с использованием только оболочки bash, не требуются внешние инструменты

$ string=92378478234978ehbWHATIWANT#98712398712398723
$ echo ${string#*ehb}
WHATIWANT#98712398712398723
$ string=${string#*ehb}
$ echo ${string%#*}
WHATIWANT
0 голосов
/ 04 декабря 2009

Одна возможность:

for i in '92378478234978ehbWHATIWANT#98712398712398723' ; do
    j=$(echo $i | sed -e 's/^.*ehb//' -e 's/#.*$//')
    echo $j
done

производит:

WHATIWANT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...