У меня есть сотни .dat
файла с данными в сторону, и я хочу, чтобы AWK их с помощью командыКак awk через несколько файлов?
awk 'NR % 513 == 99' data.0003.127.dat > data.0003.127.Ma.dat
Я попытался написать файл сценария как
for i in {1 ... 9}; do
i=i*3
datafile = sprintf("data.%04d.127.dat",i)
outfile = sprintf("data.%04d.127.Ma.dat",i)
awk 'NR % 513 == 99' datafile > outfile
done
Мне нужно только 0003
0006
0009
. .. файлы, но приведенный выше сценарий не работает нормально. Ошибка:
bash: ./Ma_awk.sh: line 3: syntax error near unexpected token `('
bash: ./Ma_awk.sh: line 3: `datafile = sprintf("data.%04d.127.dat",i)'
Что мне делать дальше? Я использую ubuntu 14.04.
несколько вопросов: не используйте пробелы вокруг присвоения переменных, т.е. удалить пробелы перед и после '='. Также, когда вы ссылаетесь на переменную в 'bash', вы должны использовать' '' 'знак i.e.' '$ datafile" 'Обратите внимание, что при работе с именами файлов целесообразно использовать двойные кавычки. Тогда 'sprintf' не существует в' bash' вместо 'printf'. 'datafile = $ (printf"% 04d "$ i) – Pankrates
Арифметика должна выполняться с помощью' ((i = i * 3)) 'или некоторой эквивалентной нотации. –