當前位置:首頁 » 操作系統 » awk源碼

awk源碼

發布時間: 2022-05-08 00:02:45

『壹』 1、linux:使用awk命令列出姓名以M開頭的員工姓名(ename)、hiredate、job三列求源代碼。急急急

awk '$1 ~/^M/' 日誌文件名
使用通配符,讓員工名和 ^M(表示M是第一個字母)配,配對成功的就列印。
你的日誌什麼格式的啊,name、hiredate、job三列分別在哪個欄位啊,不給出來怎麼寫?

『貳』 Shell編程:批量文件名稱字元替換(實現源碼+注釋)

y:root:/tmp/file>ls-ltr
total5
drwxr-xr-x3rootroot640Dec1211:53..
-rwxr-xr-x1rootroot243Dec1212:02chgname
-rw-r--r--1rootroot0Dec1212:02a9.txt
-rw-r--r--1rootroot0Dec1212:02a88.txt
-rw-r--r--1rootroot0Dec1212:02a2.txt
-rw-r--r--1rootroot0Dec1212:02a100.txt
-rw-r--r--1rootroot0Dec1212:02a1.txt
drwxr-xr-x2rootroot192Dec1212:02.
y:root:/tmp/file>./chgname
a1.txt->a[1].txt
a100.txt->a[100].txt
a2.txt->a[2].txt
a88.txt->a[88].txt
a9.txt->a[9].txt
y:root:/tmp/file>ls-ltr
total5
drwxr-xr-x3rootroot640Dec1211:53..
-rwxr-xr-x1rootroot243Dec1212:02chgname
-rw-r--r--1rootroot0Dec1212:02a[9].txt
-rw-r--r--1rootroot0Dec1212:02a[88].txt
-rw-r--r--1rootroot0Dec1212:02a[2].txt
-rw-r--r--1rootroot0Dec1212:02a[1].txt
-rw-r--r--1rootroot0Dec1212:02a[100].txt
drwxr-xr-x2rootroot208Dec1212:02.
y:root:/tmp/file>catchgname
#!/bin/bash

ls-1--color=nevera*.txt|awk'/^a[0-9]+.txt$/{
cmd="mv"$0"47"gensub(/^a([0-9]+).txt$/,"a\[\1\].txt","",$0)"47"
cmd|getline
close(cmd)
print$0"->"gensub(/^a([0-9]+).txt$/,"a\[\1\].txt","",$0)
}'

源碼解釋:

ls -1 --color=never a*.txt 列出所有符合條件文件然後通過管道|傳輸給awk

awk根據輸入重組系統命令"mv a1.txt 'a[1].txt'"然後通過getline執行

命令執行完畢close(cmd)...

這個做法比較簡單直接,如果使用while loop就比較麻煩一點點,如果你一定要while也是可以做到的。

『叄』 求OLSR協議模擬中的ns2的源代碼,tcl腳本與awk文件

建議找客服問下或去相關的論壇問問~

『肆』 請問linux下的系統命令是不是開源的 比如sort,awk等等,如果是的話,在哪可以找到源代碼

Linux是開源的,它自帶的功能強大的命令也是開源的,也就是說,我們可以獲得這些命令的源代碼並研究它。那究竟如何獲得系統的命令的源代碼呢?
命令的源代碼是一個軟體包為單元的,放在一個軟體包的源代碼中,若要下載一個命令的源代碼,就要把這個命令所屬的軟體包的源代碼都下載下來。命令的源代碼就在下載的源代碼的相關目錄內,通常是src目錄,相應的主文件名為cmd.c,其中cmd為具體的命令,如ls命令的主程序文件為ls.c。可查閱「Linux命令大全」了解Linux命令。

『伍』 awk '{print $2}' 這個命令是什麼意思

linux中shell命令段awk '{print $2}'的意思是選取並輸出第二列的數據。

AWK是一個優良的文本處理工具,Linux及Unix環境中現有的功能最強大的數據處理引擎之一。這種編程及數據操作語言的最大功能取決於一個人所擁有的知識。awk經過改進生成的新的版本nawk,gawk,現在默認linux系統下日常使用的是gawk,用命令可以查看正在應用的awk的來源(ls -l /bin/awk )

linux命令是對Linux系統進行管理的命令。對於Linux系統來說,無論是中央處理器、內存、磁碟驅動器、鍵盤、滑鼠,還是用戶等都是文件,Linux系統管理的命令是它正常運行的核心,與之前的DOS命令類似。linux命令在系統中有兩種類型:內置Shell命令和Linux命令。

(5)awk源碼擴展閱讀:

linux優點:

1、Linux由眾多微內核組成,其源代碼完全開源;

2、Linux繼承了Unix的特性,具有非常強大的網路功能,其支持所有的網際網路協議,包括TCP/IPv4、TCP/IPv6和鏈路層拓撲程序等,且可以利用Unix的網路特性開發成出新的協議棧;

3、Linux系統工具鏈完整,簡單操作就可以配置出合適的開發環境,可以簡化開發過程,減少開發中模擬工具的障礙,使系統具有較強的移植性;

參考資料來源:

網路-Awk

網路-linux命令

『陸』 linux awk命令

一、awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各種分析處理。

二. awk命令格式和選項
2.1 awk的語法有兩種形式
1. 命令行方式
awk [-F field-separator] 'commands' input-file(s)
其中,commands是真正awk命令,[-F域分隔符]是可選的。input-file(s)是待處理的文件。
在awk中,文件的每一行中,由域分隔符分開的每一項稱為一個域。通常,在不指名-F域分隔符的情況下,默認的域分隔符是空格。
2. 將所有的awk命令插入一個單獨文件,然後調用:
awk -f awk-script-file input-file(s)
其中,-f選項載入awk-script-file中的awk腳本,input-file(s)跟上面的是一樣的。
2.2 命令選項
(1)-F fs or --field-separator fs :指定輸入文件折分隔符,fs是一個字元串或者是一個正則表達式,如-F:。
(2)-v var=value or --asign var=value :賦值一個用戶定義變數。
(3)-f scripfile or --file scriptfile :從腳本文件中讀取awk命令。
(4)-mf nnn and -mr nnn :對nnn值設置內在限制,-mf選項限制分配給nnn的最大塊數目;-mr選項限制記錄的最大數目。這兩個功能是Bell實驗室版awk的擴展功能,在標准awk中不適用。
(5)-W compact or --compat, -W traditional or --traditional :在兼容模式下運行awk。所以gawk的行為和標準的awk完全一樣,所有的awk擴展都被忽略。
(6)-W left or --left, -W right or --right :列印簡短的版權信息。
(7)-W help or --help, -W usage or --usage :列印全部awk選項和每個選項的簡短說明。
(8)-W lint or --lint :列印不能向傳統unix平台移植的結構的警告。
(9)-W lint-old or --lint-old :列印關於不能向傳統unix平台移植的結構的警告。
(10)-W posix :打開兼容模式。但有以下限制,不識別:/x、函數關鍵字、func、換碼序列以及當fs是一個空格時,將新行作為一個域分隔符;操作符**和**=不能代替^和^=;fflush無效。
(11)-W re-interval or --re-inerval :允許間隔正則表達式的使用,參考(grep中的Posix字元類),如括弧表達式[[:alpha:]]。
(12)-W source program-text or --source program-text :使用program-text作為源代碼,可與-f命令混用。
(13)-W version or --version :列印bug報告信息的版本。
三. 使用方法
#awk '{pattern + action}' {filenames}
盡管操作可能會很復雜,但語法總是這樣,其中 pattern 表示 AWK 在數據中查找的內容,而 action 是在找到匹配內容時所執行的一系列命令。花括弧({})不需要在程序中始終出現,但它們用於根據特定的模式對一系列指令進行分組。 pattern就是要表示的正則表達式,用斜杠括起來。
awk語言的最基本功能是在文件或者字元串中基於指定規則瀏覽和抽取信息,awk抽取信息後,才能進行其他文本操作。完整的awk腳本通常用來格式化文本文件中的信息。
通常,awk是以文件的一行為處理單位的。awk每接收文件的一行,然後執行相應的命令,來處理文本。
四. 模式和操作
awk腳本是由模式和操作組成的:
pattern {action} 如$ awk '/root/' test,或$ awk '$3 < 100' test。
兩者是可選的,如果沒有模式,則action應用到全部記錄,如果沒有action,則輸出匹配全部記錄。默認情況下,每一個輸入行都是一條記錄,但用戶可通過RS變數指定不同的分隔符進行分隔。
4.1. 模式
模式可以是以下任意一個:
(1)正則表達式:使用通配符的擴展集。
(2)關系表達式:可以用下面運算符表中的關系運算符進行操作,可以是字元(3)串或數字的比較,如$2>%1選擇第二個欄位比第一個欄位長的行。
(4)模式匹配表達式:用運算符~(匹配)和~!(不匹配)。
(5)模式,模式:指定一個行的范圍。該語法不能包括BEGIN和END模式。
(6)BEGIN:讓用戶指定在第一條輸入記錄被處理之前所發生的動作,通常可在這里設置全局變數。
(7)END:讓用戶在最後一條輸入記錄被讀取之後發生的動作。
4.2. 操作
操作由一人或多個命令、函數、表達式組成,之間由換行符或分號隔開,並位於大括弧內。主要有四部份:
(1)變數或數組賦值
(2)輸出命令
(3)內置函數
(4)控制流命令

五. awk的環境變數

七. 記錄和域
7.1. 記錄
awk把每一個以換行符結束的行稱為一個記錄。
記錄分隔符:默認的輸入和輸出的分隔符都是回車,保存在內建變數ORS和RS中。
$0變數:它指的是整條記錄。如$ awk '{print $0}' test將輸出test文件中的所有記錄。
變數NR:一個計數器,每處理完一條記錄,NR的值就增加1。
如$ awk '{print NR,$0}' test將輸出test文件中所有記錄,並在記錄前顯示記錄號。
7.2. 域
記錄中每個單詞稱做「域」,默認情況下以空格或tab分隔。awk可跟蹤域的個數,並在內建變數NF中保存該值。如$ awk '{print $1,$3}' test將列印test文件中第一和第三個以空格分開的列(域)。
7.3. 域分隔符
內建變數FS保存輸入域分隔符的值,默認是空格或tab。我們可以通過-F命令行選項修改FS的值。如$ awk -F: '{print $1,$5}' test將列印以冒號為分隔符的第一,第五列的內容。
可以同時使用多個域分隔符,這時應該把分隔符寫成放到方括弧中,如$awk -F'[:/t]' '{print $1,$3}' test,表示以空格、冒號和tab作為分隔符。
輸出域的分隔符默認是一個空格,保存在OFS中。如$ awk -F: '{print $1,$5}' test,$1和$5間的逗號就是OFS的值。
八. 匹配操作符(~)
用來在記錄或者域內匹配正則表達式。如$ awk '$1 ~/^root/' test將顯示test文件第一列中以root開頭的行。
九. 比較表達式
conditional expression1 ? expression2: expression3,
例如:
$ awk '{max = {$1 > $3} ? $1: $3: print max}' test。如果第一個域大於第三個域,$1就賦值給max,否則$3就賦值給max。
$ awk '$1 + $2 < 100' test。如果第一和第二個域相加大於100,則列印這些行。
$ awk '$1 > 5 && $2 < 10' test,如果第一個域大於5,並且第二個域小於10,則列印這些行。
十. 范圍模板
范圍模板匹配從第一個模板的第一次出現到第二個模板的第一次出現之間所有行。如果有一個模板沒出現,則匹配到開頭或末尾。如$ awk '/root/,/mysql/' test將顯示root第一次出現到mysql第一次出現之間的所有行。

『柒』 用法 awk [-Fc] [-f 源代碼 | 'cmds'] [文件]

Y 將游標移動到要復制行位置,按yy。當你想粘貼的時候,請將游標移動到你想復制的位置的前一個位置,然後按 p

『捌』 如何獲取android源代碼

當前的Android代碼託管在兩個方:https://github.com/android 和https://android.googlesource.com之前在 android.git.kernel.org上也有託管,不過現在重定向到了https://android.googlesource.com好在都支持git訪問

google提供的repo工具實際上是一個內部操作git工具來簡化操作Android源碼的Python腳本。經過嘗試,直接使用git工具在ubuntu下可以實現cloneAndroid源碼。下面介紹一下方法:

1.獲取當前的在github上託管的Androidgitrepositories:

github頁面為:https://github.com/android/following。不過這個頁面不支持通過wget"https://github.com/android/following"或者curl"https://github.com/android/following"的方式訪問,錯誤信息如下:

這個時候需能做的只能是"tryagain"了。

需要說明的是"不要試圖同時並發執行多個gitclone命令",這樣會導致大量出現上面貼圖中的錯誤,另外,整個clone過程中耗時最多的gitrepository如下:

kernel_common.gitkernel_msm.gitplatform_frameworks_base.gitplatform_prebuilt.git其中platform_prebuilt.git是google提供的預編譯好的二進制文件,包含:各種庫文件,jar包,可執行程序等等,如果只是閱讀Android源代碼,這個gitrepository可以不用clone.

『玖』 Redhat Linux:使用awk、shell命令處理下表的問題,求源代碼。急急急!非常感謝!

my %info;

my ( $id, $ename, $job, $mgr, $hiredate );

while (<DATA>) {
( $id, $ename, $job, $mgr, $hiredate ) = split /\s+/;
$info{$id} = {
ename => $ename,
job => $job,
mgr => $mgr,
hiredate => $hiredate
}
unless exists $info{$id};
}

my $format = "%-15s %-10s %-15s\n";
printf $format, qw(Ename Job Hiredate);
foreach my $empo_id ( keys %info ) {
if ( $info{$empo_id}->{'hiredate'} =~ /^M/ ) {
printf $format,
$info{$empo_id}->{'ename'},
$info{$empo_id}->{'job'},
$info{$empo_id}->{'hiredate'};
}
}

熱點內容
在團競模式中怎麼重置配置 發布:2024-10-08 02:12:54 瀏覽:288
寶馬遠程伺服器如何啟用 發布:2024-10-08 02:02:57 瀏覽:390
c語言freadfwrite 發布:2024-10-08 02:01:15 瀏覽:854
腳本還不簡單嗎 發布:2024-10-08 01:54:43 瀏覽:423
安卓手機如何像平板一樣橫屏 發布:2024-10-08 01:33:26 瀏覽:509
wapi認證伺服器ip 發布:2024-10-08 01:33:24 瀏覽:506
centos自帶python 發布:2024-10-08 00:53:31 瀏覽:340
android串口調試助手 發布:2024-10-08 00:45:03 瀏覽:405
sqlserver2008亂碼 發布:2024-10-08 00:39:59 瀏覽:220
華為電腦伺服器系統進不去提示 發布:2024-10-08 00:13:42 瀏覽:492