我有一个平面文件如下:
11|aaa
11|bbb|NO|xxx
11|ccc
11|ddd|NO|yyy
对于不包含 的行|否| , 我想添加字符串 |是| 在末尾。所以我的文件应该是这样的:
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 个小时。我相信它花费了太多时间,因为它必须搜索每一行并写入临时文件。有没有更快的方法来实现这一目标?
最佳答案
这将很快:
sed '/NO/!s/$/|YES|/' filename
关于shell - 如何使用 shell 脚本附加到文件中不包含特定模式的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7742487/