Shell-Script
如何優化這個oneliner?(如果第二列為空,則將該行放在另一個文件中)
我有一點“oneliner”:
while read ONELINE; do if [[ -n "`echo $ONELINE | awk '{print $2}'`" ]]; then echo "$ONELINE" >> LIST-ok.txt else echo "$ONELINE" >> LIST-notok.txt fi done < ORIGINALLIST.txt
但它非常慢..我怎樣才能優化它來做同樣的事情但要快得多?如果第二列為空,則將給定行放在另一個文件中。
您已經標記了問題awk,因此請使用它:
awk '{if (NF>=2) {print > "LIST-ok.txt"} else {print > "LIST-notok.txt"}}' filename
另一種說法是使用三元運算符:
awk '{f=NF>=2?"LIST-ok.txt":"LIST-notok.txt"; print > f}' filename
@devnull 的 awk oneliner 的 perl 版本:
perl -alne 'print { $#F ? stdout : stderr } $_' < original >list-ok 2>list-notok