у меня есть такие строки:AWK получить
Volume.Free_IBM_LUN59_28D: 2072083693568
Я хотел бы получить только IBM_LUN59_28D от этой линии, используя AWK.
Благодаря
у меня есть такие строки:AWK получить
Volume.Free_IBM_LUN59_28D: 2072083693568
Я хотел бы получить только IBM_LUN59_28D от этой линии, используя AWK.
Благодаря
Вы можете использовать sub
делать замены на каждой входной линии, в соответствии со следующим стенограмме:
pax> echo 'Volume.Free_IBM_LUN59_28D: 2072083693568' | awk '
...> {
...> sub (".*Free_", "");
...> sub (":.*", "");
...> print
...> }'
IBM_LUN59_28D
Эта команда пересекает несколько строк для удобства чтения, но, если вы работаете на файл и не слишком обеспокоены читаемости, вы можете просто использовать сжатую версию:
awk '{sub(".*Free_","");sub(":.*","");print}' inputFile
Если вы поддаетесь непредставленными awk
решения, вы можете также использовать sed
:
sed -e 's/.*Free_//' -e 's/:.*//' inputFile
Обратите внимание, что оба эти решения основываются на ваших (несколько разреженных) тестовых данных. Если ваше определение «как» содержит предшествующие текстовые сегменты другое, чем Free_
или последующие символы прочее, чем :
, может потребоваться дополнительная работа.
Например, если вы хотите строку между первым _
и первым :
, вы можете использовать:
awk '{sub("[^_]*_","");sub(":.*","");print}'
С СЭД:
sed 's/[^_]*_\(.*\):.*/\1/'
Искать последовательности, не _
символы следуют _
(это будет соответствовать Volume.Free_
), затем другая последовательность символов (это будет соответствовать IBM_LUN59_28D, мы группируем это для f uture), затем следуют :
и любая последовательность символов. Замените сохраненным рисунком (\1
). Вот и все.
Пример:
$ echo "Volume.Free_IBM_LUN59_28D: 2072083693568" | sed 's/[^_]*_\(.*\):.*/\1/'
IBM_LUN59_28D
Вот один awk
awk -F"Free_" 'NF>1{split($2,a,":");print a[1]}'
EKS:
echo "Volume.Free_IBM_LUN59_28D: 2072083693568" | awk -F"Free_" 'NF>1{split($2,a,":");print a[1]}'
IBM_LUN59_28D
Он делит линию Free_
.
Если линия, то есть более чем одно поле NF>1
затем:
Split второго поля свиданья :
и напечатать первую часть a[1]
С AWK:
echo "$val" | awk -F: '{print $1}' | awk -F. '{print $2}' | awk '{print substr($0,6)}'
где данная строка находится в $ Вале.