Как передать переменную в параметр печати awk - PullRequest
1 голос
/ 15 июня 2010

Я пытаюсь извлечь столбцы nth + 1 и nth + 3 из файла.

Это то, что пытались, это полезный псевдокод:

for i in {1..100} ; do awk -F "," " { printf \"%3d, %12.3f, %12.3f\\n\", \$1, \$($i+1), \$($i+3) } " All_Runs.csv > Run-$i.csv

, что, очевидно, не работает (но это было разумно надеяться).

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 15 июня 2010

Вы можете избежать неприятных кавычек и экранирования, используя awk для увеличения:

awk -F "," 'BEGIN { i = j = 1 } { i++; j+=3; printf "%3d, %12.3f, %12.3f\n", $1, $i, $j > Run-$i.csv }' All_Runs.csv 

Или используя функцию передачи переменных в awk:

for i in {1..100}; do awk -F "," -v i=$i '{ i++; j=i+2; printf "%3d, %12.3f, %12.3f\n", $1, $i, $j }' All_Runs.csv > Run-$i.csv; done

(оба не проверены)

0 голосов
/ 15 июня 2010

Подожди, это работает, если я правильно наберу команду ...

for i in {1..2} ; do awk -F "," " { printf \"%3d %12.3f %12.3f\\n\", \$1, \$($i+1), \$($i+3) } " All_Runs.csv ; done

Отсутствует ; done. Doh!

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