Linux命令之 —— grep \ls \ ll \ sed \ bg fg \ ipset \ wc \ ifconfig \ awk
0. grep命令
1. Linux ls ?-ld 1
2. Linux 中ls -l // ll 命令詳解 ?(7個字段):文件屬性 1
3. shell中的if判斷
4. Linux中 >和>>的區別 ??[]和[[]]的區別 3
5. sed的使用參數 (shell的用途)
6. bg或者fg
7. ipset命令
8. wc - 命令
9. ifconfig命令
10. awk 命令
???
0.grep命令????
1.Linux ls ?-ld
ls 列出文件以及目錄
-l 以詳細的格式列表
-d 僅列目錄
只是查看當前目錄的詳細信息,只是目錄,不包括目錄下的子目錄和文件。
?
ls -ld ?目錄名/文件名
只是查看此目錄/文件的詳細信息,只是目錄,不包括目錄下的子目錄和文件。
?ls -ld 目錄名/文件名 | awk ‘{print ?int($5)}’
?2. Linux 中ls -l // ll 命令詳解 ?(7個字段):文件屬性
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”表示鏈接
“b“表示塊設備文件(block)
“c”表示字符設備文件(character)
“p”表示文件為命令管道文件
“s”為socket文件
?
??前三個rwx表示:*文件擁有者權限
??中間三個表示:$所屬組擁有者權限
??最后三個表示:#其他用戶用于的權限
?
?如果一個文件不是目錄,此時這一字段表示這個文件所具有的硬鏈接數
?所有人添加s權限,用戶lee使用/bin/touch創建file所有人為root
?文件/目錄的擁有者
文件/目錄擁有者所在的組
文件所占用的的空間(以字節為單位)
文件/目錄最近訪問/修改的時間
文件名
3.shell中的if判斷
shell中的if與c語言if上的區別
| shell if | c語言中的if |
| 0為真,走then | 正好相反,非0走then |
| 不支持整數變量直接if 必須:if [ i –ne 0 ]但支持字符串變量直接if if [ str ] 如果字符串非0 | 支持變量直接if if (i ) |
?
| 文件表達式 | 整數變量表達式 | 字符串變量表達式 |
| if [ -f??file ]????如果文件存在 if [ -d ...???]????如果目錄存在 if [ -s file??]????如果文件存在且非空? if [ -r file??]????如果文件存在且可讀 if [ -w file??] ???如果文件存在且可寫 if [ -x file??] ???如果文件存在且可執行 | 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 ????????????????????????????????字符串允許使用賦值號做等號 if??[ $string1 !=??$string2 ]???如果string1不等于string2??????? if??[ -n $string??]?????????????如果string 非空(非0),返回0(true)?? if??[ -z $string??]?????????????如果string 為空 if??[ $sting ]??????????????????如果string 非空,返回0 (和-n類似) ??? |
-s file 文件大小非0時為真
[ -f "somefile" ] :判斷是否是一個文件
?
[ -x "/bin/ls" ] :判斷/bin/ls是否存在并有可執行權限
?
[ -n "$var" ] :判斷$var變量是否有值
?
[ "$a" = "$b" ] :判斷$a和$b是否相等 ??????
-r file 用戶可讀為真
-w file 用戶可寫為真
-x file 用戶可執行為真
-f file 文件為正規文件為真
-d file 文件為目錄為真
-c file 文件為字符特殊文件為真
-b file 文件為塊特殊文件為真
-s file 文件大小非0時為真
-t file 當文件描述符(默認為1)指定的設備為終端時為真
?
if [ -s ?"audit" ];then
…………one…………
if [ ?! -s ?audit.bak ];then
…………two…………
else
…………three…………
fi
…………four…………
fi
…………five…………?????'
??
shell中的?if...fi?語句的基本控制語句,它允許Shell有條件作出決定并執行語句。
語法
if [ expression ]then Statement(s) to be executed if expression is truefi
Shell?expression求值。如果結果值是true,給定statement被執行。如果?expression?為false?,則沒有語句將不會被執行。大部分的時候,會使用比較操作符決策。
關注對括號和表達之間的空間。這個空間是強制性的,否則語法錯誤。
如果expression?是一個shell命令,那么它會被假定如此,如果它執行后返回0。如果它是一個布爾表達式,那么返回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
這將產生以下結果:
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這行下面添加內容sed -i '/fromstart/r 4.txt' 5.txt
12、第一列排序存文件awk '{print $1}' vip1.txt |sort -n > vip2.txt //把 vip1.txt文件中的內容排序按照第一列排序 覆蓋給 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中 >和>>的區別 ??[]和[[]]的區別
>(重定向到一個地方)直接把內容生成到指定文件,會覆蓋員文件中的內容,還有一種用途是直接生成一個空白文件,相當于touch命令
>>(追加到一個地方)尾部追加,不會覆蓋掉文件中原有的內容
?
雙括號中的表達式可以看作是一個單的的語句,并返回其退出狀態碼:
而邏輯與(and)和邏輯或(or)在 [ 和 [[ 中的用法也不同:
[ 中使用 -a 和 -o 參數連接不同的條件,[[ 中使用 && 和 ||。
?
5. sed的使用參數
http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html
http://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html
常用選項:
????????-n∶取消默認的輸出,使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN的資料一般都會被列出到屏幕上。但如果加上 -n 參數后,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來
??????? -e∶進行多項編輯,即對輸入行應用多條sed命令時使用. 直接在指令列模式上進行 sed 的動作編輯
??????? -f∶指定sed腳本的文件名. 直接將 sed 的動作寫在一個檔案內, -f filename 則可以執行 filename 內的sed 動作
??????? -r∶sed 的動作支援的是延伸型正則表達式的語法。(預設是基礎正則表達式語法)
??????? -i∶直接修改讀取的文件內容,而不是由屏幕輸出??????
常用命令:
??????? a ∶ 新增, a 的后面可以接字串,而這些字串會在新的一行出現(目前的下一行)
??????? c ∶ 取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行
??????? d ∶ 刪除,因為是刪除,所以 d 后面通常不接任何內容
???????? i ∶ 插入, i 的后面可以接字串,而這些字串會在新的一行出現(目前的上一行)
???????? p∶ 列印,亦即將某個選擇的資料印出。通常 p 會與參數 sed -n 一起用
???????? s∶ 取代,可以直接進行替換的工作。通常這個 s 的動作可以搭配正則表達式。例如 1,20s/old/new/g
?特殊字符意義:
、使用句點匹配單字符????句點“.”可以匹配任意單字符。“.”可以匹配字符串頭,也可以是中間任意字符。假定正在過濾一個文本文件,對于一個有1 0個字符的腳本集,要求前4個字符之后為X C,匹配操作如下:. . . .X C. . . .
在行首以^匹配字符串或字符序列????^只允許在一行的開始匹配字符或單詞。在行首第4個字符為1,匹配操作表示為:^ . . . 1
在行尾以$匹配字符串或字符????可以說$與^正相反,它在行尾匹配字符串或字符, $符號放在匹配單詞后。如果在行尾匹配單詞j e t 0 1,操作如下:j e t 0 1 $????如果只返回包含一個字符的行,操作如下:^ . $
使用*匹配字符串中的單字符或其重復序列????使用此特殊字符匹配任意字符或字符串的重復多次表達式。
使用/屏蔽一個特殊字符的含義????有時需要查找一些字符或字符串,而它們包含了系統指定為特殊字符的一個字符。如果要在正則表達式中匹配以* . p a s結尾的所有文件,可做如下操作:/ * / . p a s
使用[]匹配一個范圍或集合???? 使用[ ]匹配特定字符串或字符串集,可以用逗號將括弧內要匹配的不同字符串分開,但并不強制要求這樣做(一些系統提倡在復雜的表達式中使用逗號),這樣做可以增 加模式的可讀性。使用“ -”表示一個字符串范圍,表明字符串范圍從“ -”左邊字符開始,到“ -”右邊字符結束。假定要匹配任意一個數字,可以使用:[ 0 1 2 3 4 5 6 7 8 9 ]????要匹配任意字母,則使用:[ A - Z a - z ]表明從A - Z、a - z的字母范圍。
使用/{/}匹配模式結果出現的次數????使用*可匹配所有匹配結果任意次,但如果只要指定次數,就應使用/ { / },此模式有三種形式,即:
????pattern/{n/} 匹配模式出現n次。
????pattern/{n,/} 匹配模式出現最少n次。
????pattern/{n,m} 匹配模式出現n到m次之間,n , m為0 - 2 5 5中任意整數。
????匹配字母A出現兩次,并以B結尾,操作如下:A / { 2 / } B匹配值為A A B????匹配A至少4次,使用:A / { 4 , / } B
sed的工作方式:
實用工具按順序逐行將文件讀入到內存中。然后,它執行為該行指定的所有操作,并在完成請求的修改之后將該行放回到內存中,以將其轉儲至終端。完成了這一行 上的所有操作之后,它讀取文件的下一行,然后重復該過程直到它完成該文件。
如同前面所提到的,默認輸出是將每一行的內容輸出到屏幕上。在這里,開始涉及到 兩個重要的因素—首先,輸出可以被重定向到另一文件中,以保存變化;第二,源文件(默認地)保持不被修改。sed 默認讀取整個文件并對其中的每一行進行修改。不過,可以按需要將操作限制在指定的行上。
實用工具:sed [options] '{command}' [filename]
1》shell將一個值替換為另一個值: '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" 來替換 "1",但僅在單詞 "two" 之后才作替換,而不是每一行的所有位置。通過指定在給出替換命令之前必須存在一次匹配,可以實現這一點:
?$ sed '/two/s/1/2/' sample_one
one 1
two 2
three 1
one 1
two 2
two 2
three 1
$
?2》shell刪除第一行、最后一行或者增加刪除某行{^表示開始 $表示結束 }
?刪除某行
???? [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> 刪除文件中包含某個關鍵字開頭的所有行
sed -i '/QWQ/d' <file> 刪除文件中包含某個關鍵字的所有行
sed -i '/ntpdate/s/^#//' /etc/crontab 刪除文中ntpdete所在行 開頭#給刪除
?
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
接下來則是刪除后續的部分,亦即:?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??????? #顯示第二行到最后一行
使用模式進行查詢
???? [root@localhost ruby] # sed -n '/ruby/p' ab??? #查詢包括關鍵字ruby所在所有行
???? [root@localhost ruby] # sed -n '/\$/p' ab??????? #查詢包括關鍵字$所在所有行,使用反斜線\屏蔽特
增加一行或多行字符串
???? [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? #在文檔中的每一行后邊都加一行相同的數據
???? 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'?? (要替換的字符串可以用正則表達式)
?????[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>、查看某文件時忽略空格(但是源文件中的空格還在,只是說在終端打印出來的文件是沒有的)
^ : 開始
$ :結尾
^$ :表示空行
<2>、shell echo打印換行的方法
# echo -e "nihao \n jie" (注意\n前后要有空格)
<3>、shell刪除文件中的所有空行
# sed -i '/^$/d' a.txt
<4>、查看的時候在每一行的后邊都打印一行空格
# awk '{print}{print "\n"}' a.txt
4》shell判斷文件是否存在
5》shell判斷文件夾是否存在
5》shell文件的追加
文件a.txt 中的內容
aaaa
AAAA
文件b.txt中的內容
bbbb
BBBB
把a.txt中的文件追加到b.txt的文件開始
aaaa
AAAA
bbbb
BBBB
<1>、if[ !-f "c.txt" ];then //循環
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 //會直接把a.txt的全部內容 直接復制到b.txt的前面
cat c.txt > b.txt //用c.txt的內容直接覆蓋掉b.txt的內容
6.bg或者fg
1》當你編輯一個文件時候:# vi xiaoming.c
2》但是不小心按了ctrl+z 退出來了
3》輸入 ?#bg
4》輸入 # fg %1
其就會自動執行 編輯功能 vi
7.ipset命令
https://wenku.baidu.com/view/13bcdf2953ea551810a6f524ccbff121dd36c59b.html
https://wenku.baidu.com/view/c55ab62a14791711cc791781.html
| 參數 | 函數用法 | 函數功能 | 示例: |
| -N | -創建 集合名稱 類型 類型具體選項 | 創建一個用集合名稱命名并且指定類型的集合。類型具體想必須是系統指定。內核版本低于2.6時系統指定為iptreemap。 | # ipset -N jie hash:ip |
| -A | -添加 集合名稱 IP | 往集合中添加一個ip。 | # ipset -A jie 2.2.2.2 |
| -L | -列出 [集合名名稱] | 列出指定集合的規則和綁定,如果沒有指定或者指定為all就列出所有的集合。 | ? |
| -X | -刪除 [集合名稱] | 刪除指定的集合,如果沒有指定或者指定all就刪除全部的集合。如果集合的綁定和默認綁定,如果集合被使用,則什么都不做。 | # ipset -X jie |
| -F | -清空 [集合名稱] | 刪除指定集合中的所有規則。綁定不會受到清空操作的影響。 | # ipset -F (刪除所有集合名稱里面的number) # ipset -F jie(刪除jie集合中的number) |
| -E | -重命名 舊集合名 新集合名 | 重命名集合,新集合名的標識必須是目前不存在的。 | ? |
| -W | -交換 源集合名 目的集合名 | 交換兩個集合的內容,或者說交換兩個集合的名稱。兩個集合存在且具有相同的類型。 | ? |
| -S | -保存 [集合名稱] | 保存指定集合的名稱。 | ? |
| -D | -刪除 集合名稱 IP | 從集合中刪除一個IP | # ipset -D jie 2.2.2.2 |
| -T | -測試 集合名稱 IP | 測試一個IP是不是在集合中,要是在集合中返回0,不在集合中返回非0. | # ipset -T jie 3.3.3.3 |
| -T | -測試 集合名稱 IP 綁定的目的集合 | 測試ip是否附屬指定集合的綁定點。 | ? |
| -B | -綁定 集合名稱 IP 綁定的目的集合 | 綁定集合里的ip和目的集合 | ? |
| -U | -解除綁定 集合名稱 IP | 刪除集合中的指定ip的綁定 | ? |
| -H | -幫助 [幫助類型] | 找出指定設置類型的幫助信息。 | ? |
1>
1.1>
1.2>
8、 linux wc命令詳解
wc -c filename:顯示一個文件的字節數
wc -m filename:顯示一個文件的字符數
wc -l filename:顯示一個文件的行數
wc -L filename:顯示一個文件中的最長行的長度
wc -w filename:顯示一個文件的字數
本文轉自凌眾科技技術文章中心 http://www.lingzhong.cn ,轉載請注明出處。
Linux wc命令詳解 http://www.lingzhong.cn/tech/20572.htm
9、ifconfig命令
添加網卡: ifconfig eth0:1 192.168.10.25 netmask 255.255.255.0
/*注意需要在root權限下 才可以執行 用su切換*/
刪除網卡: ifconfig eth0:1 192.168.10.25 netmask 255.255.255.0 down
/*這個是用命令刪除 */
ifconfig eth0:1 down
/*這個是用別名 直接刪除 網卡*/
取所有的eth開頭的網卡: 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
*/
根據別名,取一個網卡的所有的信息: 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
*/
取某一個網卡的ip部分: ifconfig eth0:1 | grep inet | awk '{print $2}'
/*
addr:192.168.10.25
*/
直接取到eth0:1網卡的ip地址: ifconfig eth0:1 | grep inet | awk '{print $2}' | awk -F: '{print $2}'
/*
192.168.10.25
*/
直接取到eth0:1網卡的網關: ifconfig eth0:1 | grep inet | awk '{print $3}' | awk -F: '{print $2}'
/*
192.168.10.255
*/
把命令寫到文件中,再從文件中讀出來:
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);
/* 結果
eth0
eth0:1
*/
char result_buf[512] = {'\0'};
FILE *fp = NULL;
while(fgets(result_net,sizeof(result_net),fp)!=NULL) //此時獲得eth0 但其最后有一個回車符
{
if(reult_net[strlen(reult_net)-1] == '\n') //刪除fgets函數取到的字符串 尾部的換行符號‘\n’
reult_net[strlen(reult_net)-1] == '\0';
if(0 == strcmp(result_net,net)) //net 是前端傳過來的值或者是從文件中讀取出來的
{ }
}
?
10、awk命令
1》awk中使用substr命令 截取字符串
在ntp時間同步時候,需要查看/etc/crontab文件
功能:設置周期性被執行的指令
格式:minute(分鐘)hour(小時) day(天)mounth (月) dayfweek(星期) program
注意:星號(*)可以用來代表所有有效的值。
井號(#)的行是注釋,不會被處理。
整數間的短線(-)指定一個整數范圍。例如:1-3 表示1,2,3
逗號(,)隔開的一系列值指定一個列表。例如:3, 4, 6, 8 標明這四個指定的整數
正斜線(/)可以用來指定間隔頻率。/<integer> 意味著在范圍內可以跳過 integer。
例如:0-59/2 分鐘字段中定義每兩分鐘。
*/3 的值可以用在月份字段中表示每三個月運行一次任務。
# /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調用run-parts命令,定時運行四個目錄下的所有腳本。
/etc/cron.hourly下的腳本會被每小時運行一次,在每小時的17分時運行。
/etc/cron.daily下的腳本會被每天運行一次,在每天6點25分運行。
/etc/cron.weekly下的腳本會被每周運行一次,在每周第7天的6點47分運行。
/etc/cron.monthly下的腳本會被每月運行一次,在每月1號的6點52分運行。
以上是文件的內容。
substr(字符串,開始,截取多少個)
# 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文件中,有如下所示的內容。
-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
實現的命令如下(解釋的時候以一行為例):
????[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》對于cat awk1.c?,不做過多的解釋;
? ? ? ? 顯示為: ??-rwxr-xr-x 1 root root 13304 May("17","a.out");
? ? ?2》對于sed 's/"//g'?,意思是去掉文件中所有的雙引號;
????? ? 顯示為: ??-rwxr-xr-x 1 root root 13304 May(17,a.out);
? ? ?3》對于awk '{print($6)}',是取出第6列;
????? ? 顯示為:May(17,a.out);
? ? ?4》對于awk '{split($0,a,"(");print a[2]}',是以'( ? '為分割點,對字符串進行截取,打印出( 后面的;
????????顯示為:17,a.out);
? ?? 5》對于awk '{split($0,b,")");print b[1]}',是以' ? )'為分割點,對字符串進行截取,打印出 )前面的;
????? ? 顯示為:17,a.out
? ? ?6》對于?awk '{split($0,c,",");print c[2],c[1]}',是以 ' ?,' 為分割點,對字符串進行截取,先打印出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引號需要轉義]] ?[[mv時候加-f取消 提示輸入y/n]]?? //[[并且要加cat命令 否則后需的fgets沒有值]]
5》awk修改文件中的 第一行第一列設為1;第二行第二列設為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區別及用法? ?//關于awk命令的幾個內置變量(NF,NR,FS,FILENAME)
6》awk修改文件中的 第一行最后一列設為1;第二行最后一列設為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修改文件中的 第一行第一列設為hi;第二行第一列設為hello;第三行第一列設為‘你好’
? ?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內置函數的使用(split/substr/length): http://www.cnblogs.com/sunada2005/p/3493941.html
使用AWK進行分割字符串以及截取字符串: https://blog.csdn.net/amkio/article/details/40656991
去掉文件中所有的雙引號: 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
總結
以上是生活随笔為你收集整理的Linux命令之 —— grep \ls \ ll \ sed \ bg fg \ ipset \ wc \ ifconfig \ awk的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 正则表达式——全部符号解释(详解)
- 下一篇: C语言入门经典——基础知识(数据类型)(