Linux命令之 —— grep \ls \ ll \ sed \ bg fg \ ipset \ wc \ ifconfig \ awk
0. grep命令
1. Linux ls ?-ld 1
2. Linux 中l(wèi)s -l // ll 命令詳解 ?(7個(gè)字段):文件屬性 1
3. shell中的if判斷
4. Linux中 >和>>的區(qū)別 ??[]和[[]]的區(qū)別 3
5. sed的使用參數(shù) (shell的用途)
6. bg或者fg
7. ipset命令
8. wc - 命令
9. ifconfig命令
10. awk 命令
???
0.grep命令????
1.Linux ls ?-ld
ls 列出文件以及目錄
-l 以詳細(xì)的格式列表
-d 僅列目錄
只是查看當(dāng)前目錄的詳細(xì)信息,只是目錄,不包括目錄下的子目錄和文件。
?
ls -ld ?目錄名/文件名
只是查看此目錄/文件的詳細(xì)信息,只是目錄,不包括目錄下的子目錄和文件。
?ls -ld 目錄名/文件名 | awk ‘{print ?int($5)}’
?2. Linux 中ls -l // ll 命令詳解 ?(7個(gè)字段):文件屬性
http://blog.csdn.net/sjzs5590/article/details/8254527
-rw-r--r--?1 root root???116?Feb ?8 13:47 ZhiZhen.c
?
“-”表示普通文件 touch
“d”表示目錄 mkdir
“l(fā)”表示鏈接
“b“表示塊設(shè)備文件(block)
“c”表示字符設(shè)備文件(character)
“p”表示文件為命令管道文件
“s”為socket文件
?
??前三個(gè)rwx表示:*文件擁有者權(quán)限
??中間三個(gè)表示:$所屬組擁有者權(quán)限
??最后三個(gè)表示:#其他用戶用于的權(quán)限
?
?如果一個(gè)文件不是目錄,此時(shí)這一字段表示這個(gè)文件所具有的硬鏈接數(shù)
?所有人添加s權(quán)限,用戶lee使用/bin/touch創(chuàng)建file所有人為root
?文件/目錄的擁有者
文件/目錄擁有者所在的組
文件所占用的的空間(以字節(jié)為單位)
文件/目錄最近訪問(wèn)/修改的時(shí)間
文件名
3.shell中的if判斷
shell中的if與c語(yǔ)言if上的區(qū)別
| shell if | c語(yǔ)言中的if |
| 0為真,走then | 正好相反,非0走then |
| 不支持整數(shù)變量直接if 必須:if [ i –ne 0 ]但支持字符串變量直接if if [ str ] 如果字符串非0 | 支持變量直接if if (i ) |
?
| 文件表達(dá)式 | 整數(shù)變量表達(dá)式 | 字符串變量表達(dá)式 |
| if [ -f??file ]????如果文件存在 if [ -d ...???]????如果目錄存在 if [ -s file??]????如果文件存在且非空? if [ -r file??]????如果文件存在且可讀 if [ -w file??] ???如果文件存在且可寫 if [ -x file??] ???如果文件存在且可執(zhí)行 | if [ int1 -eq int2 ]????如果int1等于int2??? if [ int1 -ne int2 ]????如果不等于 ??? if [ int1 -ge int2 ]???????如果>= if [ int1 -gt int2 ]???????如果> if [ int1 -le int2 ]???????如果<= if [ int1 -lt int2 ]???????如果< | If??[ $a = $b ]?????????????????如果string1等于string2 ????????????????????????????????字符串允許使用賦值號(hào)做等號(hào) if??[ $string1 !=??$string2 ]???如果string1不等于string2??????? if??[ -n $string??]?????????????如果string 非空(非0),返回0(true)?? if??[ -z $string??]?????????????如果string 為空 if??[ $sting ]??????????????????如果string 非空,返回0 (和-n類似) ??? |
-s file 文件大小非0時(shí)為真
[ -f "somefile" ] :判斷是否是一個(gè)文件
?
[ -x "/bin/ls" ] :判斷/bin/ls是否存在并有可執(zhí)行權(quán)限
?
[ -n "$var" ] :判斷$var變量是否有值
?
[ "$a" = "$b" ] :判斷$a和$b是否相等 ??????
-r file 用戶可讀為真
-w file 用戶可寫為真
-x file 用戶可執(zhí)行為真
-f file 文件為正規(guī)文件為真
-d file 文件為目錄為真
-c file 文件為字符特殊文件為真
-b file 文件為塊特殊文件為真
-s file 文件大小非0時(shí)為真
-t file 當(dāng)文件描述符(默認(rèn)為1)指定的設(shè)備為終端時(shí)為真
?
if [ -s ?"audit" ];then
…………one…………
if [ ?! -s ?audit.bak ];then
…………two…………
else
…………three…………
fi
…………four…………
fi
…………five…………?????'
??
shell中的?if...fi?語(yǔ)句的基本控制語(yǔ)句,它允許Shell有條件作出決定并執(zhí)行語(yǔ)句。
語(yǔ)法
if [ expression ]then Statement(s) to be executed if expression is truefi
Shell?expression求值。如果結(jié)果值是true,給定statement被執(zhí)行。如果?expression?為false?,則沒(méi)有語(yǔ)句將不會(huì)被執(zhí)行。大部分的時(shí)候,會(huì)使用比較操作符決策。
關(guān)注對(duì)括號(hào)和表達(dá)之間的空間。這個(gè)空間是強(qiáng)制性的,否則語(yǔ)法錯(cuò)誤。
如果expression?是一個(gè)shell命令,那么它會(huì)被假定如此,如果它執(zhí)行后返回0。如果它是一個(gè)布爾表達(dá)式,那么返回true。
例子:
#!/bin/sha=10b=20if [ $a == $b ]then echo "a is equal to b"fiif [ $a != $b ]then echo "a is not equal to b"fi
這將產(chǎn)生以下結(jié)果:
a is not equal to b
shell判斷文件有多少行
https://zhidao.baidu.com/question/922495731716454579.html
# awk '{print NR}' a.txt | tail -n1
1、^代表行首
2、$代表行尾
3、所有行首增加sed -i 's/^/ABC/' a.txt
4、所有行尾添加sed -i 's/$/XYZ/' a.txt
5、刪除首行sed -i '1d' d.txt
6、刪除末行sed -i '$d' d.txt
7、第5行添加sed -i '5 r 5.txt' a.txt
8、shell判斷文件有多少行
https://zhidao.baidu.com/question/922495731716454579.html
# awk '{print NR}' a.txt | tail -n1
9、剔除空格sed -i 's/[ ]*//g' ~/vip1.txt
10、刪除回車符sed -i 's/^M//g' a.txt
11、從fromstart這行下面添加內(nèi)容sed -i '/fromstart/r 4.txt' 5.txt
12、第一列排序存文件awk '{print $1}' vip1.txt |sort -n > vip2.txt //把 vip1.txt文件中的內(nèi)容排序按照第一列排序 覆蓋給 vip2.txt
13、取出文件中的某一列 # awk '{print $1}' aa.txt
14、shell刪除文件中的所有空行
# sed -i '/^$/d' a.txt
shell截取字符串的方法
http://www.cnblogs.com/xwdreamer/p/3823463.html
4.Linux中 >和>>的區(qū)別 ??[]和[[]]的區(qū)別
>(重定向到一個(gè)地方)直接把內(nèi)容生成到指定文件,會(huì)覆蓋員文件中的內(nèi)容,還有一種用途是直接生成一個(gè)空白文件,相當(dāng)于touch命令
>>(追加到一個(gè)地方)尾部追加,不會(huì)覆蓋掉文件中原有的內(nèi)容
?
雙括號(hào)中的表達(dá)式可以看作是一個(gè)單的的語(yǔ)句,并返回其退出狀態(tài)碼:
而邏輯與(and)和邏輯或(or)在 [ 和 [[ 中的用法也不同:
[ 中使用 -a 和 -o 參數(shù)連接不同的條件,[[ 中使用 && 和 ||。
?
5. sed的使用參數(shù)
http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html
http://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html
常用選項(xiàng):
????????-n∶取消默認(rèn)的輸出,使用安靜(silent)模式。在一般 sed 的用法中,所有來(lái)自 STDIN的資料一般都會(huì)被列出到屏幕上。但如果加上 -n 參數(shù)后,則只有經(jīng)過(guò)sed 特殊處理的那一行(或者動(dòng)作)才會(huì)被列出來(lái)
??????? -e∶進(jìn)行多項(xiàng)編輯,即對(duì)輸入行應(yīng)用多條sed命令時(shí)使用. 直接在指令列模式上進(jìn)行 sed 的動(dòng)作編輯
??????? -f∶指定sed腳本的文件名. 直接將 sed 的動(dòng)作寫在一個(gè)檔案內(nèi), -f filename 則可以執(zhí)行 filename 內(nèi)的sed 動(dòng)作
??????? -r∶sed 的動(dòng)作支援的是延伸型正則表達(dá)式的語(yǔ)法。(預(yù)設(shè)是基礎(chǔ)正則表達(dá)式語(yǔ)法)
??????? -i∶直接修改讀取的文件內(nèi)容,而不是由屏幕輸出??????
常用命令:
??????? a ∶ 新增, a 的后面可以接字串,而這些字串會(huì)在新的一行出現(xiàn)(目前的下一行)
??????? c ∶ 取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行
??????? d ∶ 刪除,因?yàn)槭莿h除,所以 d 后面通常不接任何內(nèi)容
???????? i ∶ 插入, i 的后面可以接字串,而這些字串會(huì)在新的一行出現(xiàn)(目前的上一行)
???????? p∶ 列印,亦即將某個(gè)選擇的資料印出。通常 p 會(huì)與參數(shù) sed -n 一起用
???????? s∶ 取代,可以直接進(jìn)行替換的工作。通常這個(gè) s 的動(dòng)作可以搭配正則表達(dá)式。例如 1,20s/old/new/g
?特殊字符意義:
、使用句點(diǎn)匹配單字符????句點(diǎn)“.”可以匹配任意單字符。“.”可以匹配字符串頭,也可以是中間任意字符。假定正在過(guò)濾一個(gè)文本文件,對(duì)于一個(gè)有1 0個(gè)字符的腳本集,要求前4個(gè)字符之后為X C,匹配操作如下:. . . .X C. . . .
在行首以^匹配字符串或字符序列????^只允許在一行的開(kāi)始匹配字符或單詞。在行首第4個(gè)字符為1,匹配操作表示為:^ . . . 1
在行尾以$匹配字符串或字符????可以說(shuō)$與^正相反,它在行尾匹配字符串或字符, $符號(hào)放在匹配單詞后。如果在行尾匹配單詞j e t 0 1,操作如下:j e t 0 1 $????如果只返回包含一個(gè)字符的行,操作如下:^ . $
使用*匹配字符串中的單字符或其重復(fù)序列????使用此特殊字符匹配任意字符或字符串的重復(fù)多次表達(dá)式。
使用/屏蔽一個(gè)特殊字符的含義????有時(shí)需要查找一些字符或字符串,而它們包含了系統(tǒng)指定為特殊字符的一個(gè)字符。如果要在正則表達(dá)式中匹配以* . p a s結(jié)尾的所有文件,可做如下操作:/ * / . p a s
使用[]匹配一個(gè)范圍或集合???? 使用[ ]匹配特定字符串或字符串集,可以用逗號(hào)將括弧內(nèi)要匹配的不同字符串分開(kāi),但并不強(qiáng)制要求這樣做(一些系統(tǒng)提倡在復(fù)雜的表達(dá)式中使用逗號(hào)),這樣做可以增 加模式的可讀性。使用“ -”表示一個(gè)字符串范圍,表明字符串范圍從“ -”左邊字符開(kāi)始,到“ -”右邊字符結(jié)束。假定要匹配任意一個(gè)數(shù)字,可以使用:[ 0 1 2 3 4 5 6 7 8 9 ]????要匹配任意字母,則使用:[ A - Z a - z ]表明從A - Z、a - z的字母范圍。
使用/{/}匹配模式結(jié)果出現(xiàn)的次數(shù)????使用*可匹配所有匹配結(jié)果任意次,但如果只要指定次數(shù),就應(yīng)使用/ { / },此模式有三種形式,即:
????pattern/{n/} 匹配模式出現(xiàn)n次。
????pattern/{n,/} 匹配模式出現(xiàn)最少n次。
????pattern/{n,m} 匹配模式出現(xiàn)n到m次之間,n , m為0 - 2 5 5中任意整數(shù)。
????匹配字母A出現(xiàn)兩次,并以B結(jié)尾,操作如下:A / { 2 / } B匹配值為A A B????匹配A至少4次,使用:A / { 4 , / } B
sed的工作方式:
實(shí)用工具按順序逐行將文件讀入到內(nèi)存中。然后,它執(zhí)行為該行指定的所有操作,并在完成請(qǐng)求的修改之后將該行放回到內(nèi)存中,以將其轉(zhuǎn)儲(chǔ)至終端。完成了這一行 上的所有操作之后,它讀取文件的下一行,然后重復(fù)該過(guò)程直到它完成該文件。
如同前面所提到的,默認(rèn)輸出是將每一行的內(nèi)容輸出到屏幕上。在這里,開(kāi)始涉及到 兩個(gè)重要的因素—首先,輸出可以被重定向到另一文件中,以保存變化;第二,源文件(默認(rèn)地)保持不被修改。sed 默認(rèn)讀取整個(gè)文件并對(duì)其中的每一行進(jìn)行修改。不過(guò),可以按需要將操作限制在指定的行上。
實(shí)用工具:sed [options] '{command}' [filename]
1》shell將一個(gè)值替換為另一個(gè)值: 's/{old value}/{new value}/'
例如:(全局修改)將tiger改為worf ??after改為before
$ echo The tiger cubs will meet on Tuesday after school |sed -e 's/tiger/wolf/' -e 's/after/before/'
$ echo The tiger cubs will meet on Tuesday after school | sed 's/tiger/wolf/;s/after/before/'
$ echo The tiger cubs will meet on Tuesday after school | sed?'
> s/tiger/wolf/
> s/after/before/'
sed ?-i "s/after/before/" ?文件名
例如:(局部修改)
$ cat sample_one
one 1
two 1
three 1
one 1
two 1
two 1
three 1
$?
假定希望用 "2" 來(lái)替換 "1",但僅在單詞 "two" 之后才作替換,而不是每一行的所有位置。通過(guò)指定在給出替換命令之前必須存在一次匹配,可以實(shí)現(xiàn)這一點(diǎn):
?$ sed '/two/s/1/2/' sample_one
one 1
two 2
three 1
one 1
two 2
two 2
three 1
$
?2》shell刪除第一行、最后一行或者增加刪除某行{^表示開(kāi)始 $表示結(jié)束 }
?刪除某行
???? [root@localhost ruby] # sed '1d' ab????????????? #刪除第一行?
???? [root@localhost ruby] # sed '$d' ab??????????????#刪除最后一行
???? [root@localhost ruby] # sed '1,2d' ab???????????#刪除第一行到第二行
???? [root@localhost ruby] # sed '2,$d' ab????????? ?#刪除第二行到最后一行
sed -i '/^QWQ/d' <file> 刪除文件中包含某個(gè)關(guān)鍵字開(kāi)頭的所有行
sed -i '/QWQ/d' <file> 刪除文件中包含某個(gè)關(guān)鍵字的所有行
sed -i '/ntpdate/s/^#//' /etc/crontab 刪除文中ntpdete所在行 開(kāi)頭#給刪除
?
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
將 IP 前面的部分予以刪除
[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
接下來(lái)則是刪除后續(xù)的部分,亦即:?192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
將 IP 后面的部分予以刪除
[root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'192.168.1.100
顯示某行
.??? [root@localhost ruby] # sed -n '1p' ab???????????#顯示第一行?
???? [root@localhost ruby] # sed -n '$p' ab?????????? #顯示最后一行
???? [root@localhost ruby] # sed -n '1,2p' ab??????? #顯示第一行到第二行
???? [root@localhost ruby] # sed -n '2,$p' ab??????? #顯示第二行到最后一行
使用模式進(jìn)行查詢
???? [root@localhost ruby] # sed -n '/ruby/p' ab??? #查詢包括關(guān)鍵字ruby所在所有行
???? [root@localhost ruby] # sed -n '/\$/p' ab??????? #查詢包括關(guān)鍵字$所在所有行,使用反斜線\屏蔽特
增加一行或多行字符串
???? [root@localhost ruby]# cat ab
???? Hello!
???? ruby is me,welcome to my blog.
???? end
???? [root@localhost ruby] # sed '1a drink tea' ab? #第一行后增加字符串"drink tea"
???? Hello!
???? drink tea
???? ruby is me,welcome to my blog.?
?????end
???? [root@localhost ruby] # sed '1,3a drink tea' ab #第一行到第三行后增加字符串"drink tea"
???? Hello!
?????drink tea
???? ruby is me,welcome to my blog.
???? drink tea
?????end
???? drink tea
???? [root@localhost ruby] # sed '1a drink tea\nor coffee' ab?? #第一行后增加多行,使用換行符\n
???? Hello!
?????drink tea
???? or coffee
???? ruby is me,welcome to my blog.
???? end
[root@localhost ruby] # awk '{print}{print "ccc"}' ab? #在文檔中的每一行后邊都加一行相同的數(shù)據(jù)
???? Hello!
ccc
???? ruby is me,welcome to my blog.
???? ccc
end
ccc
代替一行或多行
???? [root@localhost ruby] # sed '1c Hi' ab??????????????? #第一行代替為Hi
???? Hi
???? ruby is me,welcome to my blog.
???? end
???? [root@localhost ruby] # sed '1,2c Hi' ab???????????? #第一行到第二行代替為Hi
???? Hi
???? end
替換一行中的某部分
格式:sed 's/要替換的字符串/新的字符串/g'?? (要替換的字符串可以用正則表達(dá)式)
?????[root@localhost ruby] # sed -n '/ruby/p' ab | sed 's/ruby/bird/g'??? #替換ruby為bird
? [root@localhost ruby] # sed -n '/ruby/p' ab | sed 's/ruby//g'??????? #刪除ruby
插入
???? [root@localhost ruby] # sed -i '$a bye' ab???????? #在文件ab中最后一行直接輸入"bye"
???? [root@localhost ruby]# cat ab
???? Hello!
???? ruby is me,welcome to my blog.
???? end
???? bye
[root@localhost ruby] # sed -i '1i\enen' ab???????? #在文件ab中最后一行直接輸入"bye"
???? [root@localhost ruby]# cat ab
???? enen
Hello!
???? ruby is me,welcome to my blog.
???? end
3》shell中的空格/空行
<1>、查看某文件時(shí)忽略空格(但是源文件中的空格還在,只是說(shuō)在終端打印出來(lái)的文件是沒(méi)有的)
^ : 開(kāi)始
$ :結(jié)尾
^$ :表示空行
<2>、shell echo打印換行的方法
# echo -e "nihao \n jie" (注意\n前后要有空格)
<3>、shell刪除文件中的所有空行
# sed -i '/^$/d' a.txt
<4>、查看的時(shí)候在每一行的后邊都打印一行空格
# awk '{print}{print "\n"}' a.txt
4》shell判斷文件是否存在
5》shell判斷文件夾是否存在
5》shell文件的追加
文件a.txt 中的內(nèi)容
aaaa
AAAA
文件b.txt中的內(nèi)容
bbbb
BBBB
把a(bǔ).txt中的文件追加到b.txt的文件開(kāi)始
aaaa
AAAA
bbbb
BBBB
<1>、if[ !-f "c.txt" ];then //循環(huán)
touch c.txt
else
cat b.txt > c.txt
cat a.txt > b.txt
sed -i ‘$d’ b.txt //去掉b.txt的最后一行
cat c.txt >> b.txt
rm -rf c.txt
fi
<2>、cat a.txt b.txt > c.txt //會(huì)直接把a(bǔ).txt的全部?jī)?nèi)容 直接復(fù)制到b.txt的前面
cat c.txt > b.txt //用c.txt的內(nèi)容直接覆蓋掉b.txt的內(nèi)容
6.bg或者fg
1》當(dāng)你編輯一個(gè)文件時(shí)候:# vi xiaoming.c
2》但是不小心按了ctrl+z 退出來(lái)了
3》輸入 ?#bg
4》輸入 # fg %1
其就會(huì)自動(dòng)執(zhí)行 編輯功能 vi
7.ipset命令
https://wenku.baidu.com/view/13bcdf2953ea551810a6f524ccbff121dd36c59b.html
https://wenku.baidu.com/view/c55ab62a14791711cc791781.html
| 參數(shù) | 函數(shù)用法 | 函數(shù)功能 | 示例: |
| -N | -創(chuàng)建 集合名稱 類型 類型具體選項(xiàng) | 創(chuàng)建一個(gè)用集合名稱命名并且指定類型的集合。類型具體想必須是系統(tǒng)指定。內(nèi)核版本低于2.6時(shí)系統(tǒng)指定為iptreemap。 | # ipset -N jie hash:ip |
| -A | -添加 集合名稱 IP | 往集合中添加一個(gè)ip。 | # ipset -A jie 2.2.2.2 |
| -L | -列出 [集合名名稱] | 列出指定集合的規(guī)則和綁定,如果沒(méi)有指定或者指定為all就列出所有的集合。 | ? |
| -X | -刪除 [集合名稱] | 刪除指定的集合,如果沒(méi)有指定或者指定all就刪除全部的集合。如果集合的綁定和默認(rèn)綁定,如果集合被使用,則什么都不做。 | # ipset -X jie |
| -F | -清空 [集合名稱] | 刪除指定集合中的所有規(guī)則。綁定不會(huì)受到清空操作的影響。 | # ipset -F (刪除所有集合名稱里面的number) # ipset -F jie(刪除jie集合中的number) |
| -E | -重命名 舊集合名 新集合名 | 重命名集合,新集合名的標(biāo)識(shí)必須是目前不存在的。 | ? |
| -W | -交換 源集合名 目的集合名 | 交換兩個(gè)集合的內(nèi)容,或者說(shuō)交換兩個(gè)集合的名稱。兩個(gè)集合存在且具有相同的類型。 | ? |
| -S | -保存 [集合名稱] | 保存指定集合的名稱。 | ? |
| -D | -刪除 集合名稱 IP | 從集合中刪除一個(gè)IP | # ipset -D jie 2.2.2.2 |
| -T | -測(cè)試 集合名稱 IP | 測(cè)試一個(gè)IP是不是在集合中,要是在集合中返回0,不在集合中返回非0. | # ipset -T jie 3.3.3.3 |
| -T | -測(cè)試 集合名稱 IP 綁定的目的集合 | 測(cè)試ip是否附屬指定集合的綁定點(diǎn)。 | ? |
| -B | -綁定 集合名稱 IP 綁定的目的集合 | 綁定集合里的ip和目的集合 | ? |
| -U | -解除綁定 集合名稱 IP | 刪除集合中的指定ip的綁定 | ? |
| -H | -幫助 [幫助類型] | 找出指定設(shè)置類型的幫助信息。 | ? |
1>
1.1>
1.2>
8、 linux wc命令詳解
wc -c filename:顯示一個(gè)文件的字節(jié)數(shù)
wc -m filename:顯示一個(gè)文件的字符數(shù)
wc -l filename:顯示一個(gè)文件的行數(shù)
wc -L filename:顯示一個(gè)文件中的最長(zhǎng)行的長(zhǎng)度
wc -w filename:顯示一個(gè)文件的字?jǐn)?shù)
本文轉(zhuǎn)自凌眾科技技術(shù)文章中心 http://www.lingzhong.cn ,轉(zhuǎn)載請(qǐng)注明出處。
Linux wc命令詳解 http://www.lingzhong.cn/tech/20572.htm
9、ifconfig命令
添加網(wǎng)卡: ifconfig eth0:1 192.168.10.25 netmask 255.255.255.0
/*注意需要在root權(quán)限下 才可以執(zhí)行 用su切換*/
刪除網(wǎng)卡: ifconfig eth0:1 192.168.10.25 netmask 255.255.255.0 down
/*這個(gè)是用命令刪除 */
ifconfig eth0:1 down
/*這個(gè)是用別名 直接刪除 網(wǎng)卡*/
取所有的eth開(kāi)頭的網(wǎng)卡: ifconfig -a | grep eth
/*
eth0 Link encap:Ethernet HWaddr 00:0c:29:11:89:2b
eth0:1 Link encap:Ethernet HWaddr 00:0c:29:11:89:2b
*/
根據(jù)別名,取一個(gè)網(wǎng)卡的所有的信息: ifconfig eth0:1
/*
eth0:1 Link encap:Ethernet HWaddr 00:0c:29:11:89:2b
inet addr:192.168.10.25 Bcast:192.168.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:19 Base address:0x2000
*/
取某一個(gè)網(wǎng)卡的ip部分: ifconfig eth0:1 | grep inet | awk '{print $2}'
/*
addr:192.168.10.25
*/
直接取到eth0:1網(wǎng)卡的ip地址: ifconfig eth0:1 | grep inet | awk '{print $2}' | awk -F: '{print $2}'
/*
192.168.10.25
*/
直接取到eth0:1網(wǎng)卡的網(wǎng)關(guān): ifconfig eth0:1 | grep inet | awk '{print $3}' | awk -F: '{print $2}'
/*
192.168.10.255
*/
把命令寫到文件中,再?gòu)奈募凶x出來(lái):
char cmd_net_buf[512] = {'\0'};
snprintf(cmd_net_buf,sizeof(cmd_net_buf),"ifconfig -a | grep eth | awk '{print $1}' ")
printf(“%s\n”,cmd_net_buf);
system(cmd_net_buf);
/* 結(jié)果
eth0
eth0:1
*/
char result_buf[512] = {'\0'};
FILE *fp = NULL;
while(fgets(result_net,sizeof(result_net),fp)!=NULL) //此時(shí)獲得eth0 但其最后有一個(gè)回車符
{
if(reult_net[strlen(reult_net)-1] == '\n') //刪除fgets函數(shù)取到的字符串 尾部的換行符號(hào)‘\n’
reult_net[strlen(reult_net)-1] == '\0';
if(0 == strcmp(result_net,net)) //net 是前端傳過(guò)來(lái)的值或者是從文件中讀取出來(lái)的
{ }
}
?
10、awk命令
1》awk中使用substr命令 截取字符串
在ntp時(shí)間同步時(shí)候,需要查看/etc/crontab文件
功能:設(shè)置周期性被執(zhí)行的指令
格式:minute(分鐘)hour(小時(shí)) day(天)mounth (月) dayfweek(星期) program
注意:星號(hào)(*)可以用來(lái)代表所有有效的值。
井號(hào)(#)的行是注釋,不會(huì)被處理。
整數(shù)間的短線(-)指定一個(gè)整數(shù)范圍。例如:1-3 表示1,2,3
逗號(hào)(,)隔開(kāi)的一系列值指定一個(gè)列表。例如:3, 4, 6, 8 標(biāo)明這四個(gè)指定的整數(shù)
正斜線(/)可以用來(lái)指定間隔頻率。/<integer> 意味著在范圍內(nèi)可以跳過(guò) integer。
例如:0-59/2 分鐘字段中定義每?jī)煞昼姟?/p>
*/3 的值可以用在月份字段中表示每三個(gè)月運(yùn)行一次任務(wù)。
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
?
*/1 * * * * root /usr/sbin/ntpdate 1.1.1.1 //自己加的
?
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
Ubuntu調(diào)用run-parts命令,定時(shí)運(yùn)行四個(gè)目錄下的所有腳本。
/etc/cron.hourly下的腳本會(huì)被每小時(shí)運(yùn)行一次,在每小時(shí)的17分時(shí)運(yùn)行。
/etc/cron.daily下的腳本會(huì)被每天運(yùn)行一次,在每天6點(diǎn)25分運(yùn)行。
/etc/cron.weekly下的腳本會(huì)被每周運(yùn)行一次,在每周第7天的6點(diǎn)47分運(yùn)行。
/etc/cron.monthly下的腳本會(huì)被每月運(yùn)行一次,在每月1號(hào)的6點(diǎn)52分運(yùn)行。
以上是文件的內(nèi)容。
substr(字符串,開(kāi)始,截取多少個(gè))
# cat /etc/crontab | grep ntpdate | awk '{print substr($1, 1,1)}'
*
# cat /etc/crontab | grep ntpdate | awk '{print substr($1, 2,1)}'
/
# cat /etc/crontab | grep ntpdate | awk '{print substr($1, 3,1)}'
1
修改值:
# sed -i '/ntpdate/s/[0-9]\+/9/' /etc/crontab ==》》把1改成9
# sed -i '/ntpdate/s/[0-9]\+.[0-9]\+.[0-9]\+.[0-9]\+/2.2.2.2/' /etc/crontab ==》》把1.1.1.1改2.2.2.2
# sed -i '/ntpdate/s/^/#/' /etc/crontab ==》》把*/1 前面加# */1==>>#*/1
# sed -i '/ntpdate/s/^#//' /etc/crontab ==》》把#*/1前面的#刪除 # */1==>>*/ 1
?
2》awk中使用split命令 截取字符串
在awk1.c文件中,有如下所示的內(nèi)容。
-rwxr-xr-x 1 root root 13304 May("17","a.out");
-rw-r--r-- 1 root root ? ? 0 May("23","awk.c");
-rw-r--r-- 1 root root ? ?12 May("55","demo.txt");
-rw-r--r-- 1 root root ? 420 May("54","readDemoTxt_fgetc.c");
需要得到,其中的一些字符??
a.out ? ? 17
awk.c ? ? 23
demo.txt ? 55
readDemoTxt_fget.c ? 54
readDemoTxt_fget.c ? 45
實(shí)現(xiàn)的命令如下(解釋的時(shí)候以一行為例):
????[root@node-2 dd]# cat awk1.c | sed 's/"//g' | awk '{print($6)}' | awk '{split($0,a,"(");print a[2]}' | awk '{split($0,b,")");print b[1]}' | awk '{split($0,c,",");print c[2],c[1]}'
? ? ?1》對(duì)于cat awk1.c?,不做過(guò)多的解釋;
? ? ? ? 顯示為: ??-rwxr-xr-x 1 root root 13304 May("17","a.out");
? ? ?2》對(duì)于sed 's/"//g'?,意思是去掉文件中所有的雙引號(hào);
????? ? 顯示為: ??-rwxr-xr-x 1 root root 13304 May(17,a.out);
? ? ?3》對(duì)于awk '{print($6)}',是取出第6列;
????? ? 顯示為:May(17,a.out);
? ? ?4》對(duì)于awk '{split($0,a,"(");print a[2]}',是以'( ? '為分割點(diǎn),對(duì)字符串進(jìn)行截取,打印出( 后面的;
????????顯示為:17,a.out);
? ?? 5》對(duì)于awk '{split($0,b,")");print b[1]}',是以' ? )'為分割點(diǎn),對(duì)字符串進(jìn)行截取,打印出 )前面的;
????? ? 顯示為:17,a.out
? ? ?6》對(duì)于?awk '{split($0,c,",");print c[2],c[1]}',是以 ' ?,' 為分割點(diǎn),對(duì)字符串進(jìn)行截取,先打印出c[2],后打印c[1];
?????? ? 顯示為:a.out 17
3》awk中使用split命令 截取字符串?
? ? 字符串 VALUES('109','x11','','','yes','0');? ?最后顯示為? ?x11? 109
[root@localhost l7-protocols]# sed ?"s/'//g" resource_app.conf | awk '{print($4)}' | awk '{split($0,a,"(");print a[2],a[1]}' | awk '{split($0,b,",");print b[2],b[1]}'
4》awk修改文件中的 某一列
? ??asdfgh?popen.txt? ? ? ? ? ? ?《--【?文件該之前】? ? ? ? ? ? ? ? ? ? ? ?asdfgh?popen
? ? qwerty?popen.c? ? ? ? ? ? ? ? ?【文件該之后】--》? ? ? ? ? ? ? ? ? ? ? ?qwerty?popen
如果只是改變顯示的值:#awk '{print $1,"popen"}' popen.txt
如果要改文件中的值:#awk '{print $1,\"popen\"}' popen.txt > temp_1 && mv -f temp_1 popen.txt
? ? ? ? ? //[[ popen引號(hào)需要轉(zhuǎn)義]] ?[[mv時(shí)候加-f取消 提示輸入y/n]]?? //[[并且要加cat命令 否則后需的fgets沒(méi)有值]]
5》awk修改文件中的 第一行第一列設(shè)為1;第二行第二列設(shè)為2;……以此類推
? ?a b c? ? ? ? ? ? ? ? ? ? ? ? ??《--【?文件該之前】? ? ? ? ? ? ? ? ? ? ? ? ??1 b c
? ?d e f? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?d 2 f?
? ?g h i? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文件該之后】--》? ? ? ? ? ? ? ? ? ? ? ? ?g h 3??
?只是改變顯示的值:# awk '{gsub($NR,NR);print $0}' awk.txt?
? ? ? ? //awk sub和gsub區(qū)別及用法? ?//關(guān)于awk命令的幾個(gè)內(nèi)置變量(NF,NR,FS,FILENAME)
6》awk修改文件中的 第一行最后一列設(shè)為1;第二行最后一列設(shè)為2;……以此類推
? ?a b c? ? ? ? ? ? ? ? ? ? ? ? ??《--【?文件該之前】? ? ? ? ? ? ? ? ? ? ? ? ??a b 1
? ?d e f? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?d e?2
? ?g h i? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文件該之后】--》? ? ? ? ? ? ? ? ? ? ? ? ?g h 3?
?只是改變顯示的值:#?awk? '$NF=NR'? awk.txt?
7》awk修改文件中的 第一行第一列設(shè)為hi;第二行第一列設(shè)為hello;第三行第一列設(shè)為‘你好’
? ?a b c? ? ? ? ? ? ? ? ? ? ? ? ??《--【?文件該之前】? ? ? ? ? ? ? ? ? ? ? ? ??hi b c
? ?d e f? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?hello?e?2
? ?g h i? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文件該之后】--》? ? ? ? ? ? ? ? ? ? ? ? ?你好?h 3?
?只是改變顯示的值:#?awk '{if(NR==1)$1="hi";else if(NR==2)$1="hello";else if(NR==3)$1="你好"}1' awk.txt??
參考的鏈接有:
linux下awk內(nèi)置函數(shù)的使用(split/substr/length): http://www.cnblogs.com/sunada2005/p/3493941.html
使用AWK進(jìn)行分割字符串以及截取字符串: https://blog.csdn.net/amkio/article/details/40656991
去掉文件中所有的雙引號(hào): https://zhidao.baidu.com/question/1608917480852840147.html?fr=iks&word=awk%B9%FD%C2%CB%D7%D6%B7%FB%B4%AE%D6%D0%B5%C4%B5%A5%D2%FD%BA%C5&ie=gbk
總結(jié)
以上是生活随笔為你收集整理的Linux命令之 —— grep \ls \ ll \ sed \ bg fg \ ipset \ wc \ ifconfig \ awk的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 正则表达式——全部符号解释(详解)
- 下一篇: C语言入门经典——基础知识(数据类型)(