【发布时间】:2016-07-16 08:44:47
【问题描述】:
我有一个问题,用户提供了文件、列、值和行的 ID。我正在尝试更改该行的值
文件格式为:
F1|F2|F3|F4|F5|F6|F7|F8
我这样做的想法是读取文件并将每个字段的值放入一个数组中。然后我会找到我想使用 if 更改的行,我将使用 awk
while IFS=$'|t' read -r -a myArray
do
if [ $4 == ${myArray[0]} ]; then
echo "${myArray[1]} ${myArray[2]} ${myArray[4]}"
awk -v column="$5" -v value="$6"-F '{ ${myArray[column]} = value }'
echo "${myArray[1]} ${myArray[2]} ${myArray[4]}"
echo "${column} ${value}"
fi
done < $2
但是,当我这样做时,没有任何变化:列和值参数不打印任何内容。
有什么想法吗?
【问题讨论】:
-
每次你在 shell 中写一个循环只是为了操作文本你有错误的方法。阅读 unix.stackexchange.com/questions/169716/… 了解更多背景信息,并阅读 Arnold Robbins 所著的《Effective Awk Programming, 4th Edition》一书,了解如何正确进行。