一道中級運維的shell面試題

偶遇的shell題:

把"------"短線上的數據處理成線下的數據

0,1,2,10,22,00,01,2,3,33

-----------------------------------

00,01,02,10,22,00,01,02,03,33


我承認,我落伍了,智力測驗 + 能力檢驗麼?


方法一: awk + awk 內置字符處理函數 + awk 控制語句

方法二: bash

貌似bash對文本批量處理的功能比較弱,不過分割以後,再通過bash的變量擴展(Parameter Expansion)還是很方便的。

其它語言,python,perl應該會更好處理。

方法一:

echo  -en '0,1,2,10,22,00,01,2,3,33' |awk 'BEGIN{RS=",";ORS=","}{if (length($0)<2) {print "0"$0}  else { print $0} }' |sed -r 's/^(.*),$/\1/g'

方法二:

#!/bin/bash
str="0,1,2,10,22,00,01,2,3,33"
typeset -i n
typeset -a tmp
for s in ${str//,/ }
do
        [ ${#s} -lt 2 ] && tmp[n]=0$s || tmp[n]=$s
        ((n++))
done
STR=${tmp[*]}
echo ${STR// /,}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章