Фрагмент выглядит следующим образом:
echo -n "Filename: "
read filename
echo -n "Data Fields? "
read -a ar
awk -F '[[:space:]][[:space:]]+' 'BEGIN{OFS = "--"} {for val in "${ar[@]}" printf $val }' $filename
ar - это массив, который я читаю, имя файла - это имя файла, который я тоже читаю.
Файл выглядит следующим образом:
100 Thomas Manager Sales $5,000
200 Jason Developer Technology $5,500
300 Sanjay Sysadmin Technology $7,000
400 Nisha Manager Marketing $9,500
500 Randy DBA Technology $6,000
То, что я пытаюсь сделать, это принять имя файла от пользователя, также взять номер поля, которое он хочет отобразить, а затем отсканировать файл и выдать соответствующий вывод.
Массив "ar" содержит номера полей, например 1,2,3.
Ввод, как показано ниже:
$ sh awk_prac.sh
Filename: employee.txt
Data Fields: 2 3
Теперь согласно вводу, который я дал выше, вывод должен выглядеть следующим образом:
Thomas Manager
Jason Developer
Sanjay Sysadmin
Nisha Manager
Randy DBA
Но каждый раз, когда я запускаю код, он показывает синтаксическую ошибку, указывающую под "val" после for.
awk: cmd. line:1: BEGIN{OFS = "--"} {for val in "${ar[@]}" printf $val }
awk: cmd. line:1: ^ syntax error
Может кто-нибудь указать на ошибку. # i_am_new_to_this #