下面是我的代码。在这里,我将第二列的值替换为“ 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/

10-11 13:03