Как я могу использовать регулярное выражение, чтобы получить определенную строку файла - PullRequest
0 голосов
/ 20 апреля 2010

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

по примеру:

для имени файла * .tgz делать

"получить определенную строку имени файла (в моем случае, получить 2010.04.12 файла 2010.01.12myfile.tgz)"

сделано

или я должен обратиться к Perl

Merci

откровенное

Ответы [ 3 ]

1 голос
/ 20 апреля 2010
FILE=2010.01.12myfile.tgz

echo ${FILE:0:10}

дает

2010.01.12
1 голос
/ 20 апреля 2010

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

#!/bin/bash

for file in 20[0-9][0-9].[01][0-9].[0-9][0-9]*tgz
do
 echo $file
done

иначе, если что-нибудь до первого алфавита,

for file in *tgz
do
 echo ${file%%[a-zA-Z]*}
done

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

0 голосов
/ 20 апреля 2010
#!/bin/sh
a="2010.04.18Myfile.tgz"
echo ${a%%+([a-zA-Z.])}

bash 'regexp довольно мощные (по крайней мере, по сравнению со стандартным sh или command.com: -))

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