我有一个如下的平面文件:
11|aaa
11|bbb|NO|xxx
11|ccc
11|ddd|NO|yyy
对于不包含|NO|的行,我希望在末尾添加字符串|YES|。因此,我的文件应该如下所示:
11|aaa|YES|
11|bbb|NO|xxx
11|ccc|YES|
11|ddd|NO|yyy
我正在使用AIX系统并且无法使用sed -i命令进行内联替换。因此,我目前使用以下代码来实现这个功能:
#Get the lines that do not contain |NO|
LINES=`grep -v "|NO|" file`
for i in LINES
do
sed "/$i/{s/$/|YES|/;}" file > temp
mv temp file
done
上述方法是可行的,但是由于我的文件包含了超过40000行,运行时间大约需要3个小时。我认为花费这么长时间的原因是因为它需要搜索每一行并写入一个临时文件。是否存在更快的方法来实现这一点?