1. 編寫shell腳本實現提取文件中的第1000-2000行數據
for((i=1000;i<=2000;i++))
do
x=${i}"p"
cat f1|sed -n "$x" >>f2
done
cat f2
這里默認認為一條數據一行,從文件f1的第1000行開始逐行讀取然後寫到新的文件f2中
2. tcl 腳本中如何讀取txt文件內容總行數後作為變數使用
首先指出一個BUG," close $b "應該放在
while {[gets $f line ] != -1 } {
...
close $b
}
否則會資源泄露。
文件b的從行數可以統計換行符獲得。不知道你想要統計文件b的行數替代什麼? 我的意思是,從你的程序中看不出為什麼要統計b的從行數。當if {[regexp $line $line2]} 條件始終不成立時,flag的值正好是b的總行數。
3. 用shell寫一個腳本,用來統計日誌總行數
單個文件統計:
$ zcat OF25_2016-10-26-211731.log.zip | wc -l
一天的所有文件統計:
$ zcat OF25_2016-10-26-*.log.zip | wc -l
使用參數的shell
#/bin/sh
zcat $1_$2-*.log.zip | wc -l
4. 求python文本分析腳本,讀取、顯示、計數匹配條件行數。
日誌文件0724.log:
+Python2.5.2(r252:60911,Feb212008,13:11:45)[MSCv.131032bit(Intel)]onwin32
-Type"right","credits"or"license()"formoreinformation.
+****************************************************************
-IDLE1.2.2====NoSubprocess====
代碼如下:
file_name='./0724.log'
stat={'+':0,'-':0}
cont={'+':'','-':''}
f=open(file_name)
forlineinf:
ifline[0]in['+','-']:
stat[line[0]]+=1
cont[line[0]]+=line[1:]
print('+:'+str(stat['+']))
print(str(cont['+']))
print('-:'+str(stat['-']))
print(str(cont['-']))
結果:
>>>
+:2
Python2.5.2(r252:60911,Feb212008,13:11:45)[MSCv.131032bit(Intel)]onwin32
****************************************************************
-:2
Type"right","credits"or"license()"formoreinformation.
IDLE1.2.2====NoSubprocess====
5. 在Ubuntu下編寫shell腳本讀取文件
需求功能:
創建測試用例文件 text :
創建shell腳本:
運行結果:
利用 awk 'END{print NR}' [文件名] 來輸出行數:
在shell腳本中添加該功能:
運行結果:
上面的shell文件只是把文件名寫死在腳本中,並沒有實際使用意義,所以需要編寫一個指令來指定需要讀取的文件,就像 vim [文件名] 一樣
「$1」 代表第1個參數,也就是在 read 之後緊跟的參數,將其作為文件名傳入:
將腳本移動至環境變數對應的目錄中:(可以自己更改 /bin/xxx 來決定運行命令的名稱,但注意不能重復)
sudo mv read /bin/read
然後添加運行許可權:
sudo chmod 755 /bin/read
打開終端的目錄可以是任何位置,通過以下命令即可運行shell腳本:
sudo read [文件路徑]
同理,我們還可以自己為復雜指令編寫shell腳本,來提高命令的使用效率,例如開關ss服務,打開銳捷客戶端認證等等。