我遇到一个问题,即用户提供该行的文件,列,值和ID。我正在尝试更改该行的值
该文件的格式为:
F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8
我想这样做是读取文件并将每个字段的值放在一个数组中。然后我将找到我想要改变的行,如果我将使用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
但是,当我这样做时,没有任何变化:列和值参数不会打印任何内容 有什么想法吗?
答案 0 :(得分:0)
你没有提供太多信息。假设您要更改特定列,您可以执行以下字段2 F2
:
$2=="F2"
正在检查字段2是否与您的特定字符串匹配。$2="Hello"
正在分配&#34;您好&#34;到第2场$1=$1
重新分配整个记录(行)print
打印出整条记录 awk -F"|" 'BEGIN{OFS="|"} ($2=="F2"){$2="Hello";$1=$1; print}' sample.csv
参见我的例子:
$cat sample.csv
F1|F2|F3|F4|F5|F6|F7|F8
$awk -F"|" 'BEGIN{OFS="|"} ($2=="F2"){$2="Hello";$1=$1; print}' sample.csv
F1|Hello|F3|F4|F5|F6|F7|F8