我有一個平面文件如下包含一個特定的模式:如何追加到文件中的行不使用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