Bash:完成中意外标记“<”附近的语法错误
Bash: Syntax error near unexpected token `<' in done
我正在使用以下脚本读取 CSV 文件第 3 列的值。但是,我收到语法错误。
tr -d '\r' < p_test.csv > fixed_p_test.csv
while IFS="," read -r rec1 rec2
do
echo "Displaying Record-$rec1"
echo "Price: $rec2"
done < <(cut -d "," -f1,3 fixed_p_test.csv | tail -n +2)
虽然 运行 上述脚本出现以下错误:
pScanFinal.sh: line 9: syntax error near unexpected token `<'
pScanFinal.sh: line 9: `done < <(cut -d "," -f1,3 fixed_p_test.csv | tail -n +2)'
我的 p_test.csv 看起来像:
A
B
C
D
E
192.158
True
12
HT
Open
254.658
False
58
SM
Closed
我该如何解决这个错误?
您实际上不需要 cut
、tail
或此处的进程替换,这意味着您可以使脚本 POSIX 符合您的要求 运行它。
{
read # Skip the first line
while IFS=, read -r rec1 _ rec2 _; do
...
done
} < fixed_p_test.csv
因为 jq
被标记了(但我不知道为什么),下面是如何使用 jq
.
输入和输出应作为原始文本读取 (-R
) 和写入 (-r
)。然后用逗号(,
)和select列[2]
(基于0)分割(/
)每一行。
jq -Rr '(./",")[2]' file.csv
12
58
不是 asked/tagged,但恕我直言 awk
更合适:
awk -F, '{print }' file.csv
我正在使用以下脚本读取 CSV 文件第 3 列的值。但是,我收到语法错误。
tr -d '\r' < p_test.csv > fixed_p_test.csv
while IFS="," read -r rec1 rec2
do
echo "Displaying Record-$rec1"
echo "Price: $rec2"
done < <(cut -d "," -f1,3 fixed_p_test.csv | tail -n +2)
虽然 运行 上述脚本出现以下错误:
pScanFinal.sh: line 9: syntax error near unexpected token `<'
pScanFinal.sh: line 9: `done < <(cut -d "," -f1,3 fixed_p_test.csv | tail -n +2)'
我的 p_test.csv 看起来像:
A | B | C | D | E |
---|---|---|---|---|
192.158 | True | 12 | HT | Open |
254.658 | False | 58 | SM | Closed |
我该如何解决这个错误?
您实际上不需要 cut
、tail
或此处的进程替换,这意味着您可以使脚本 POSIX 符合您的要求 运行它。
{
read # Skip the first line
while IFS=, read -r rec1 _ rec2 _; do
...
done
} < fixed_p_test.csv
因为 jq
被标记了(但我不知道为什么),下面是如何使用 jq
.
输入和输出应作为原始文本读取 (-R
) 和写入 (-r
)。然后用逗号(,
)和select列[2]
(基于0)分割(/
)每一行。
jq -Rr '(./",")[2]' file.csv
12
58
不是 asked/tagged,但恕我直言 awk
更合适:
awk -F, '{print }' file.csv