новое для awk и попытаться сделать что-то, что, вероятно, просто, но это заставляет меня немного. Чтобы упростить вещи, у меня есть текстовый файл с именем «образец» и содержит следующую строку:Awk: разделение поля
164516454242451BX% Кв 110 225 1784 Ohio USA
Я хочу, чтобы получить следующий вывод, используя AWK:
Apt 110 225
есть ли способ, что я могу разделить $ 1, так что "кв" это отдельное поле? Код, который я пытаюсь сделать, приведен ниже. Я не получаю ошибки, но вывод состоит всего из двух пустых строк.
awk '
BEGIN {
split($1," ","%")
}
print $2,$3,$4
END {
print ""
} ' sample
Работали красиво спасибо !!! – Cro2015
'+ 1'. Третий arg для 'split()' является разделителем полей, который является регулярным выражением с дополнительными свойствами, а не строкой. Разделитель regexp является '/', а не '' ', который является разделителем строк. Awk может создавать регулярные выражения из строк, анализируя контекст, в котором используется строка, чтобы определить, является ли это контекстом регулярного выражения, но лучше всего сохранить код и просто и используйте регулярные выражения regexp для регулярных выражений, если у вас нет конкретной причины: «split ($ 1, a, /% /)». –
@EdMorton Я знаю, что третий arg является регулярным выражением, но не знал, что он не должен быть строкой. Отредактировано так, как вам было предложено. Спасибо за информацию! –