Оптимизировать оболочку одним вкладышем - PullRequest
1 голос
/ 27 декабря 2010

Нужно оптимизировать оболочку UNIX на один лайнер

cat ${TEMPFILE} | cut -d ' ' -f1 | sed '/^$/d'| sed '1,4d'| sed 's/$/|ON_ICE|OFF_ICE/g' > ${MYREPORT}

, так как это вызывает проблемы с производительностью.

Ответы [ 4 ]

3 голосов
/ 27 декабря 2010

Вызовите sed только один раз:

cat ${TEMPFILE}|cut -d ' ' -f1|sed '/^$/d;1,4d;s/$/|ON_ICE|OFF_ICE/g'>${MYREPORT}
1 голос
/ 27 декабря 2010
awk '/^$/ || ++count <= 4 {next} {print $1 "|ON_ICE|OFF_ICE"}' "$TEMPFILE" > "$MYREPORT"
0 голосов
/ 27 декабря 2010

используйте awk следующим образом:

awk '{$0=$1};if (NF>1){++rec}; if(NF > 1 && rec > 4 ){sub(/$/,"|ON_ICE|OFF_ICE")); print};' ${TEMPFILE} > ${MYREPORT}
0 голосов
/ 27 декабря 2010

В

cat ${TEMPFILE} | cut -d ' ' -f1 | sed '/^$/d' | sed '1,4d' | sed 's/$/|ON_ICE|OFF_ICE/g' > ${MYREPORT}

очевидно, что вы можете заменить sed '1,4d' на tail + 4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...