下面是我的代码。在这里,我将第二列的值替换为“ 1AM”到“ 1AM”,但它不起作用。
#! /bin/ksh
file="TOTAL_SALES_UNITS_ORDERS_SORTDATA1.txt"
while IFS=":" read f1 f2 f3 f4 f5
do
if [[ $f2 -eq '1' ]];
then
print $f2
f2="1AM"
print $f2
fi
IFS=":"
done < "$file"
预期结果是第2列将更新为1AM,其中值为1。
但是文件没有更新,回显值显示为1AM,但文件的值为“ 1”。
代码有什么问题吗?请提前指导谢谢!
最佳答案
因此,您想有条件地将以:
分隔的文件中的第二列从1
更改为1AM
吗?
您可以使用awk
轻松完成此操作:
$ cat testdata
foo:bar:quux:one:two
foo:1:quux:one:two
$ awk 'BEGIN { OFS=FS=":" } { if ($2 == "1") $2 = "1AM"; print }' < testdata > newdata
$ cat newdata
foo:bar:quux:one:two
foo:1AM:quux:one:two
关于linux - 在while循环内未分配值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15755627/