0

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

代码有什么问题吗?请指导提前谢谢!

4

1 回答 1

0

因此,您想有条件地将:-delimited 文件中的第二列从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
于 2013-04-04T13:29:10.033 回答