日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python pandas获取行号_python获取行号和函数名

發(fā)布時間:2023/12/20 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python pandas获取行号_python获取行号和函数名 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

敢用自己的名字做軟件名字的,都有非常強(qiáng)大的自信。比如,垠語言什么的。

awk的命名得自于它的三個創(chuàng)始人姓別的首字母,都是80來歲的老爺爺了。當(dāng)然也有四個人的組合:流行的GoF設(shè)計(jì)模式。但對于我這游戲愛好者來說,想到的竟然是三位一體,果然是不爭氣啊。

它長的很像C,為什么這么有名,除了它強(qiáng)大的功能,我們姑且認(rèn)為a這個字母比較靠前吧。awk比sed簡單,它更像一門編程語言。

打印某一列

下面,這幾行代碼的效果基本是相同的:打印文件中的第一列。

這可能是awk最常用的功能了:打印文件中的某一列。它智能的去切分你的數(shù)據(jù),不管是空格,還是TAB,大概率是你想要的。

對于csv這種文件來說,分隔的字符是,。AWK使用-F參數(shù)去指定。以下代碼打印csv文件中的第1和第2列。

awk -F "," '{print $1,$2}' file

由此,我們可以看出一個基本的awk命令的組成部分。

一般的開發(fā)語言,數(shù)組下標(biāo)是以0開始的,但awk的列$是以1開始的,而0指的是原始字符串。

網(wǎng)絡(luò)狀態(tài)統(tǒng)計(jì)

本小節(jié),采用awk統(tǒng)計(jì)netstat命令的一些網(wǎng)絡(luò)狀態(tài),來看一下awk語言的基本要素。netstat的輸出類似于:

其中,第6列,標(biāo)明了網(wǎng)絡(luò)連接所處于的網(wǎng)絡(luò)狀態(tài)。我們先給出awk命令,看一下統(tǒng)計(jì)結(jié)果。

netstat -ant |

awk ' \

BEGIN{print "State","Count" } \

/^tcp/ \

{ rt[$6]++ } \

END{ for(i in rt){print i,rt[i]} }'

輸出結(jié)果為:

State Count

LAST_ACK 1

LISTEN 64

CLOSE_WAIT 43

ESTABLISHED 719

SYN_SENT 5

TIME_WAIT 146

下面這張圖會配合以上命令詳細(xì)說明,希望你能了解awk的精髓。

乍一看,好嚇人的命令,但是很簡單。awk和我們通常的程序不太一樣,它分為四個部分。

1、BEGIN 開頭部分,可選的。用來設(shè)置一些參數(shù),輸出一些表頭,定義一些變量等。上面的命令僅打印了一行信息而已。

2、END 結(jié)尾部分,可選的。用來計(jì)算一些匯總邏輯,或者輸出這些內(nèi)容。上面的命令,使用簡單的for循環(huán),輸出了數(shù)組rt中的內(nèi)容。

3、Pattern 匹配部分,依然可選。用來匹配一些需要處理的行。上面的命令,只匹配tcp開頭的行,其他的不進(jìn)入處理。

4、Action 模塊。主要邏輯體,按行處理,統(tǒng)計(jì)打印,都可以。

注意點(diǎn) 1、awk的主程序部分使用單引號‘包圍,而不能是雙引號 2、awk的列開始的index是0,而不是1

例子

我們從幾個簡單的例子,來看下awk的作用。

1、輸出Recv-Q不為0的記錄

netstat -ant | awk '$2 > 0 {print}'

2、外網(wǎng)連接數(shù),根據(jù)ip分組

netstat -ant | awk '/^tcp/{print $4}' | awk -F: '!/^:/{print $1}' | sort | uniq -c

3、打印RSS物理內(nèi)存占用

top -b -n 1 | awk 'NR>7{rss+=$6}END{print rss}

4、過濾(去掉)空白行

awk 'NF' file

5、打印奇數(shù)行

awk 'a=!a' file

6、輸出行數(shù)

awk 'END{print NR}' file

這些命令,是需要了解awk的一些內(nèi)部變量的,接下來我們來介紹。

內(nèi)置變量

FS

下面的兩個命令是等價(jià)的 。

awk -F ':' '{print $3}' file

awk 'BEGIN{FS=":"}{print $3}' file

BEGIN塊中的FS,就是內(nèi)部變量,可以直接指定或者輸出。如果你的文件既有用,分隔的,也有用:分割的,FS甚至可以指定多個分隔符同時起作用。

FS="[,:|]"

其他

OFS 指定輸出內(nèi)容的分割符,列數(shù)非常多的時候,簡化操作。相似命令:

awk -F ':' '{print $1,"-",$2,"-",$4}' file

awk 'BEGIN{FS=":";OFS="-"}{print $1,$2,$4}' file

NF 列數(shù)。非常有用,比如,過濾一些列數(shù)不滿足條件的內(nèi)容。

awk -F, '{if(NF==3){print}}' file

NR 行號,例如,下面兩個命令是等價(jià)的。

cat -n file

awk '{print NR,$0}' file

RS 記錄分隔標(biāo)志 ORS 指定記錄輸出的分隔標(biāo)志

FILENAME 當(dāng)前處理的文件名稱,在一次性處理多個文件時非常有用

編程語言特性

數(shù)學(xué)運(yùn)算

從上面的代碼可以看出,awk可以做一些簡單的運(yùn)算。它的語言簡潔,不需要顯示的定義變量的類型。

比如上面的rt[$6]++,就已經(jīng)默認(rèn)定義了一個叫做rt的hash(array?),里面的key是網(wǎng)絡(luò)狀態(tài),而value是可以進(jìn)行運(yùn)算的(+-*/%)。

包含一些內(nèi)置的數(shù)學(xué)運(yùn)算(有限)

int

log

sqrt

exp

sin

cos

atan2

rand

srand

字符串操作

類似其他語言,awk也內(nèi)置了很多字符串操作函數(shù)。它本來就是處理字符串的,所以必須強(qiáng)大。

length(str) #獲取字符串長度

split(input-string,output-array,separator)

substr(input-string, location, length)

語言特性

awk是個小型的編程語言,看它的基本語法,如果你需要復(fù)雜一點(diǎn)的邏輯,請自行深入了解,包括一些時間處理函數(shù):

# logic

if(x=a){}

if(x=a){}else{}

while(x=a){break;continue;}

do{}while(x=a)

for(;;){}

# array

arr[key] = value

for(key in arr){arr[key]}

delete arr[key]

asort(arr) #簡單排序

據(jù)說,awk可以勝任所有的文本操作。因?yàn)樗旧砭褪且婚T語言啊。

End

曾經(jīng)使用awk編寫過復(fù)雜的日志處理和統(tǒng)計(jì)程序。雖然比寫sed舒暢了很多,但還是備受煎熬。更加上現(xiàn)在有各種nawk,gawk版本之間的區(qū)別,所以業(yè)務(wù)復(fù)雜度一增長,就習(xí)慣性的轉(zhuǎn)向更加簡潔、工具更全的python。

awk處理一些簡單的文本還是極其方便的,最常用的還是打印某一列之類的,包括一些格式化輸出。對于awk,要簡單的滾瓜爛熟,復(fù)雜的耳熟能詳,畢竟有些大牛,就喜歡寫這種腳本呢。

注明:轉(zhuǎn)載于小姐妹養(yǎng)的狗

總結(jié)

以上是生活随笔為你收集整理的python pandas获取行号_python获取行号和函数名的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。