前言
昨天是程式員節,參加了綠色聯盟(GCC)組織的一場比賽:第三屆全國高校綠色計算系列大賽-任務挑戰組半決賽,我主要是做的OpenEuler的Shell編程,因為昨天一直在忙,所以博客拖到了現在,那就給大家拜個晚節,祝大家沒有996,1024快樂!
截止到目前,題目還可以提交,大家可以注冊賬號去試一下!傳送門
題目一:
題面
題解
拓展鏈接
題目二:
題面
題解
總結
題目一:
題面

題解
#!/bin/bash
#將答案補充完畢
#/********** Begin **********/#
sed -i 's/\([a-zA-Z]\+\)\([0-9]\+\)\([a-zA-Z]\+\)/\1,\2,\3/g' test.txt
cat test.txt
#/********** End **********/#
拓展鏈接
sed命令不會修改test.txt檔案,只是將里面的值拿出來,經過處理之后列印在終端上,
其實shell命令都是我大一的時候學的了,現在都忘得差不多了,所以都是網上現學的,一般看幾個博客,就會了,
你需要什么內容,就在博客里把你的需求和用到知識點放一塊就行,
比如“shell for回圈按行讀入”,右邊是sed命令的介紹:Sed命令詳解&正則運算式
題目二:
題面

題解
#!/bin/bash
#將答案填寫在下方空白區域
#/********** Begin **********/#
IFS=$'\n'
arrA=()
arrB=()
for line in $(cat b.txt)
do
arrB[${#arrB[*]}]=$( echo $line | grep -o '^\([a-zA-Z]\+\)' )
done
#echo "" > resB.txt
for temp in ${arrB[*]}
do
echo $temp >> resB.txt
done
for line in $(cat a.txt)
do
line=$( echo $line | rev | grep -o '^\([a-zA-Z]\+\)' | rev )
arrA[${#arrA[*]}]=$line
done
#echo "" > resA.txt
for temp in ${arrA[*]}
do
echo $temp >> resA.txt
done
awk 'NR==FNR{ a[$1]=$1 } NR>FNR{ if(a[$1] == ""){ print $1}}' resB.txt resA.txt
#/********** End **********/#
思路比較簡單:建立兩個陣列arrA和arrB分別去存放a.txt每行的最后一個單詞和b.txt每行的第一個單詞 ,讀是通過for回圈,然后通過>>可以將陣列的內容輸出到檔案resA和resB,最后通過awk去取resA和resB差集,就是本題結果,
還是甩鏈接自己去學吧,要鍛煉這種搜索能力,
shell for回圈:shell for回圈 按行讀入
shell 陣列操作:shell 陣列定義和獲取元素
awk得到差集:awk做差集-簡書
總結
今天完成的還不錯,一個多小時就完成了題目,剩下的時間瘋狂優化MindSpore,把自己練成一個調參工程師!下面是比賽時候拍的圖!全靠牛肉粒和飲料供能啊!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/192794.html
標籤:其他
上一篇:20201024節日快樂
下一篇:1024 程式員們,節日快樂喲~
