我有一个平面文件如下包含一个特定的模式:如何追加到文件中的行不使用shell脚本
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个小时运行。我相信它花费了很多时间,因为它必须搜索每一行并写入临时文件。有没有更快的方法来实现这一目标?
感谢。这个效果很好:) 如果我不想在包含NO或aaa的行中追加YES,我如何修改上述命令? – AKS
您应该使用'|' (替代)正则表达式字符,像这样 awk'$ 0!〜/ NO | aaa/{print $ 0“| YES |”} $ 0〜/ NO | aaa/{print}'temp.txt 作为感兴趣的事情,你的测试用例的速度差是多少? – Max
超级。这正是我想要的。该操作现在需要一分钟时间才能执行。我以前的逻辑过去需要大约3小时:)非常感谢 – AKS