2015-11-26 5 views
1

Я хотел бы извлечь номера, которые содержит поле.awk extract number from field

Например подано $5 выглядит как [u8789] Мне понадобится 8789.

Я уже знаю, что это может быть сделано с echo "[u8789]"|awk -F'[^0-9]*' '$0=$2'

Но мне нужно то же самое в сценарии AWK, и я не нашел, как получить ожидаемый результат без вызова AWK из оболочки.

ТНХ

+3

Что вы хотите использовать? Вопрос не ясен – 123

+0

, так что вы читаете из файла? Пожалуйста, отредактируйте свой Q, чтобы включить небольшие образцы данных (файл), и как вы хотите/нужно вызвать 'awk' .. Обычно' awk -f prog.awk dataFile.csv' Удачи. – shellter

ответ

4

Я хотел бы использовать Grep:

grep -o '[[:digit:]]\+' 

Когда awk следует использовать и у вас есть gawk, вы можете использовать FPAT переменную:

gawk '{print $1}' FPAT='[0-9]+' 

«От внутри "скрипта awk без помощиили разделителем артистизм, я хотел бы использовать gsub(), как это:

awk '{gsub(/[^[:digit:]]/, "", $0)}1' 

Дальнейшее чтение:

+0

FTAP: круто !! (+1) – JJoao

+0

Да, это хорошо, однако это расширение GNU. – hek2mgl

+0

Это не проблема, у нас есть gnu awk везде! – JJoao

1

(г) AWK скрипты

Ваш вопрос не очень ясно ...

  • Я считаю, что вам нужен сценарий.

После 2 примера

I) получают первые 2 числа в каждой строке, (после @ hek2mgl)

#!/usr/bin/gawk -f 

BEGIN { FPAT="[0-9]+"} 
     { print $1,$2} 

II) получают все числа внутри внутри скобок [...]

#!/usr/bin/gawk -f 

BEGIN { RS="["; FS="]"; } 
     { print $1}