1樓:匿名使用者
nf表示第幾個欄位,每個欄位預設用空格分開。
nf-3的意思是倒數第三個欄位,ssh2是第-0個欄位,663951是第-1個欄位....
192.168.0.78是第-3個欄位。
2樓:匿名使用者
nf 是每行的欄位數
nr 是總共讀取了多少行
像awk $(nf-3) 就是倒數第四個欄位, 所以恰好是ip地址另注, 空格是欄位識別時的分隔符
3樓:匿名使用者
nf代表是每行的欄位數量
nr表示awk開始執行程式後所讀取的資料行數
awk中 nr 和 nf到底是什麼意思? 能舉例說明嗎?
4樓:匿名使用者
nr - number of record - 當前處理的行是第幾行(因為awk是流處理工具,一行一行處理的,所以nr在不停的自增1)
fnr - file number of record - 當前處理的行是當前處理檔案的第幾行
nf - number of fileds - 當前行有多少列資料(這個在每行都會根據設定的分割符重新計算,預設分割符是任意連續的多個空白符)
(nr==fnr) 大致等效於 (argind==1) , 一般用來判斷是不是在處理第一個檔案。
但區別是: 前者是判斷當前處理的總行數跟檔案內行數相等,而這種情況一般都是在第一個檔案上,而argind==1是引數位置第1的檔案時生效。—— 但,如果前面的檔案是空的,那麼nr==fnr就生效於第一個非空檔案,而argind==1不會。
這微妙的區別使它們可以應用於不同的需要。
實際使用中還可以用檔名判斷當前處理的是哪一個檔案。
上面幾種使用的環境: 用awk連續處理多個檔案時,比如 awk '命令序列' file1 file2 file* 這樣的情況下,判斷在處理哪個檔案了。
5樓:百度使用者
比如現在awk處理到第五行。第一行沒有進行操作,2,3,4,5行進行了操作,那麼nr=5,fnr=4
nr==fnr 表示從起始行到當前行,awk都進行了操作,比如修改,新增等等
簡單來說,nr就是當前讀取多少行,fnr就是當前修改了多少行,fnr<=nr
linux指令碼中awk是什麼awk後面接的nr是什麼意思
6樓:匿名使用者
nr==2就是
對第二行執行後面的操作,也就是 , 而print $0 的意思就是列印當前行,也就是第二行。所以
awk 'nr==n' file
這條命令的作用就是列印 file 檔案的第n行。
7樓:匿名使用者
把第二行記錄列印出來.
解釋:$ awk 'nr==2 ' filenamenr:記錄行號
$0:這一
行記錄例子:
$cat > test
aa bb cc
dd ee ff
gg hh ii
$>gawk 'nr==2 ' test
dd ee ff
8樓:舒彤雯彌半
$@:表示所有指令碼引數的內容
$#:表示返回所有指令碼引數的個數。
示例:編寫如下shell指令碼,儲存為test.sh#!/bin/sh
echo
"number:$#"
echo
"argume:$@"
執行指令碼:
./test.sh
first_arg
second_arg
說明:給指令碼提供了兩個引數,所以$#輸出的結果是2,$@代表了引數的內容!
linux shell 指令碼 wak語句中 awk 'begin { fs="'"'"'";rs="\n"} {for (i=2;i<=nf;i=i+2)
9樓:匿名使用者
fs表示操作的時候以什麼為分割符
rs表示記錄分割符(record separator)即rs表示的是awk操作最小單位的邊界,而fs是這個最小單位中分割的符號
例如:101,john doe:102,jason **ith:103,raj reddy
如果不指定rs,指定fs為「,」,那麼awk將101作為第一列,剩下的全部為第二列,如果指定rs=":",那麼awk就會將內容作為三「行」,第一列包括101,102和103,第二列包括john doe,jason **ith和raj reddy
10樓:滄海中一笑
其實fs="'"'"'";的意思是以 ' (單冒號)作為分隔符(貼上到這上面看著不是太清楚,你自己弄下)
linux-hg2:~ # echo '_"'"'"'"_'
_"'"_ (兩個雙冒號,中間一個單冒號)linux-hg2:~ # cat test.txtab'c'b
linux-hg2:~ # awk 'begin ' test.txt
ab c
linux-hg2:~ #
效果等同於fs="'\''" 雙冒號、單冒號、斜槓、單冒號、單冒號、雙冒號
11樓:匿名使用者
rs/ors:行輸入/輸出分隔符,預設回車
fs/ofs:欄位的輸入/輸出分隔符,預設為空格和製表符tab
上面的意思表示為:以「'」作為欄位分隔符,以換行作為行分隔符。
awk '{print $2}' 這個命令是什麼意思?
12樓:徜逸
一行一行的讀取指定的檔案, 然後以空格作為分隔符,列印第二個欄位。
比如有個檔案是testawk.txt,檔案內容如下:
11 22 33 44
55 66 77 88
執行」awk '' $textawk.txt:「的結果為:
1122
介紹awk是一種程式語言,用於在linux/unix下對文字和資料進行處理。資料可以來自標準輸入(stdin)、一個或多個檔案,或其它命令的輸出。
它支援使用者自定義函式和動態正規表示式等先進功能,是linux/unix下的一個強大程式設計工具。它在命令列中使用,但更多是作為指令碼來使用。awk有很多內建的功能,比如陣列、函式等,這是它和c語言的相同之處,靈活性是awk最大的優勢。
擴充套件資料
awk常用命令選項
1、-f fs fs指定輸入分隔符,fs可以是字串或正規表示式,如-f:
2、-v var=value 賦值一個使用者定義變數,將外部變數傳遞給awk
3、-f scripfile 從指令碼檔案中讀取awk命令
4、-m[fr] val 對val值設定內在限制,-mf選項限制分配給val的最大塊數目;-mr選項限制記錄的最大數目。這兩個功能是bell實驗室版awk的擴充套件功能,在標準awk中不適用。
linux命令是對linux系統進行管理的命令。對於linux系統來說,無論是**處理器、記憶體、磁碟驅動器、鍵盤、滑鼠,還是使用者等都是檔案;
linux系統管理的命令是它正常執行的核心,與之前的dos命令類似。linux命令在系統中有兩種型別:內建shell命令和linux命令。
13樓:足壇風行者
linux中shell命令段awk ''的意思是選取並輸出第二列的資料。
awk是一個文字分析工具,他可以把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理,$2 是指第二個切片。print $2是列印第二個切片的值。
使用方法:awk '' 。
例如使用命令 last -n 1輸出一行資料:
root pts/1 192.168.1.100 tue feb 10
則 last -n 5 | awk '' 命令輸出的是:
root
擴充套件資料
呼叫awk的三種方式介紹
1、命令列方式
awk [-f field-separator] '***mands' input-file(s)
其中,***mands 是真正awk命令,[-f域分隔符]是可選的。 input-file(s) 是待處理的檔案。在awk中,檔案的每一行中,由域分隔符分開的每一項稱為一個域。
通常,在不指名-f域分隔符的情況下,預設的域分隔符是空格。
2、shell指令碼方式
將所有的awk命令插入一個檔案,並使awk程式可執行,然後awk命令直譯器作為指令碼的首行,一遍通過鍵入指令碼名稱來呼叫。
相當於shell指令碼首行的:#!/bin/sh
可以換成:#!/bin/awk
3、將所有的awk命令插入一個單獨檔案,然後呼叫:
awk -f awk-script-file input-file(s)
其中,-f選項載入awk-script-file中的awk指令碼,input-file(s)跟上面的是一樣的。
14樓:匿名使用者
$2:表示第二個欄位
print $2 : 列印第二個欄位
awk '' $filename : 一行一行的讀取指定的檔案, 以空格作為分隔符,列印第二個欄位
比如有這樣一個檔案
a1 b1 c1 d1
a2 b2 c2 d2
執行的結果是,輸出
b1b2
15樓:匿名使用者
zhangsan 25 男
上面的內容被空格分為三個部分,依次為zhangsan 25 男在awk中就分別對應$1 $2 $3
print $2的話就會輸出25
awk 'nr==1 {print $1} 這句shell語句是什麼意思
16樓:匿名使用者
列印第一行的第一個欄位,預設分隔符為 空格或製表符tab (都可以)。
源資料可以是通過管道傳遞過來的多行字串,也可以是檔案。
例如:echo -e "a b c\nd e f\ng h i" | awk 'nr==1 '
或者:awk 'nr==1 ' file.txt
17樓:匿名使用者
awk 'nr==1' file
nr==1 定位在file的第一行
print $1 顯示第一列內容
18樓:匿名使用者
1 樓正解, 未指定分割符 預設是空格
linux shell指令碼中printf列印的時候怎麼不足2位補空格 5
19樓:匿名使用者
用printf控制格式輸出最簡單:
echo "11 22 33"|awk ''
如果非要用print:
echo "11 22 33"|awk 'begin;print $0}'
還有sed寫法,不過要用正規表示式
20樓:認不倒你
echo "1 2 3" | awk ''
shell指令碼替換a、b兩個檔案裡面的內容
21樓:匿名使用者
先讀取a檔案中那行內容,
然後通過awk獲取b檔案中的第五行內容,替換後重新覆蓋寫入a檔案。
**如下:
#!/bin/sh
a=/usr/123.txt
b=/tem/456.conf
read line <$a
awk -v a=$line 'nr==5' $b >$a
22樓:小米飛貓
#!/bin/bash
a=`cat a`
b=`head -n 1 b`
sed -i "s/a/b" b
sed -i "s/b/a" a
23樓:
可以使用sed進行操作,先定義一個引數讀取a檔案中的第一行 linea=`sed...` 或者是使用cat把內容讀取出來,再使用sed的替換方法,將b檔案中的第一行替換為$linea即可。希望有幫助
shell指令碼中怎麼輸出第二列為指定內容的所有行的資訊
24樓:匿名使用者
寫個指令碼,使用for迴圈,設一個變數i 代表的是行號,從1開始,然後每次執行加1,類似
於a=`cat file|wc -l`
for (( i = 0; i < = $a; i++ ))doj = `cat file |awk "nr==$i"|awk ''`
k =`cat file |awk "nr==$i"`if [[ j -eq *** ]];
then echo $k
fidone
沒有測 但是大概就是這麼個意思
awk處理多個檔案,關於awk兩個檔案進行比對的問題
root localhost cat afor i in ls free dob awk i d ls i awk f c awk green d expr b c delta ddone root localhost cat free 1df 12 12 root localhost cat gr...
shell本地指令碼呼叫遠端指令碼當遠端指令碼執行完再繼
bin bash 呼叫expect指令碼執行遠端sh expect c set timeout 10000 spawn ssh usr ip expect assword expect send sh 1 r expect echo ls l 其中timeout時間需要設定足夠長,不然會連線超時斷掉...
linux shell怎麼歸類出檔名類似的檔案
ls1 1 1 1 1 1 1 1 1 2 1 1 3 1 1 4 1 ae 2 1 1 2 1 2 2 1 3 2 1 4 2 2 1 2 2 2 3 1 2 3 1 3 a 1 af a d 1 adgfa ls grep 0 9 0 9 0 9 1 1 1 1 1 2 1 1 3 1 1 4 ...