2013-11-01 1 views
-1

Я пытался получить NF из 2 аргументов (не файлов) в awk без успеха.Как получить NF из аргумента AWK?

Это командная строка:

awk -f the_program 12/12/2013 11/11/2014 

Можно ли как некоторые трубы ARGV [1] или ARGV [2], чтобы GetLine получить NF? Я хотел получить NF, поэтому я могу легко проверить аргументы, прежде чем делать с ними другие вещи.

+2

Некоторый пример будет замечательным. Что тебе нужно? NF = количество полей. – Jotne

ответ

1

Я не уверен, что это можно сделать самостоятельно, используя awk. Попробуйте использовать обертку bash сценарий вокруг него.

myscript.sh

#!/bin/bash 
awk 'BEGIN { 
    RS=" "; FS="/"; 
} 
{ 
    print NF; 
}' <(echo $*) 

Тест

% myscript.sh 12/12/2013 11/11/2014 
3 
3 

или прекратив использование echo с <<< как предложено @fedorqui

#!/bin/bash 
awk 'BEGIN {RS=" ";FS="/";} {print NF}' <<<$* 
+0

Молодцы! Другая возможность - «awk» BEGIN {RS = «"; FS = "/"} {print NF} '<<< "12/12/2013 11/11/2014" ' – fedorqui

+1

@fedorqui Aha! обновил ан с вашим предложением. Благодаря :) – jkshah

2

Вы можете сделать это в чистом AWK:

$ awk -F/ 'BEGIN{for (i=1;i<ARGC;i++) {print split(ARGV[i], a) }}' 12/12/2013 11/11/2014 
3 
3 
0

Это все, что вы хотите?

$ awk 'BEGIN{ print ARGC - 1 }' 12/12/2013 11/11/2014 
2 

Если нет, опубликуйте некоторые ожидаемые результаты и объясните, почему.

Смежные вопросы