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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

Linux命令之 —— grep \ls \ ll \ sed \ bg fg \ ipset \ wc \ ifconfig \ awk

發(fā)布時(shí)間:2025/10/17 linux 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux命令之 —— grep \ls \ ll \ sed \ bg fg \ ipset \ wc \ ifconfig \ awk 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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命令????

Linux系統(tǒng)中g(shù)rep命令是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹?配的行打印出來(lái)。grep全稱是Global?Regular?Expression?Print,表示全局正則表達(dá)式版本,它的使用權(quán)限是所有用戶。

grep的工作方式是這樣的,它在一個(gè)或多個(gè)文件中搜索字符串模板。如果模板包括空格,則必須被引用,模板后的所有字符串被看作文件名。搜索的結(jié)果被送到標(biāo)準(zhǔn)輸出,不影響原文件內(nèi)容。

grep可用于shell腳本,因?yàn)間rep通過(guò)返回一個(gè)狀態(tài)值來(lái)說(shuō)明搜索的狀態(tài),如果模板搜索成功,則返回0,如果搜索不成功,則返回1,如果搜索的文件不存在,則返回2。我們利用這些返回值就可進(jìn)行一些自動(dòng)化的文本處理工作。

1.命令格式:

grep?[option]?pattern?file

2.命令功能:

用于過(guò)濾/搜索的特定字符。可使用正則表達(dá)式能多種命令配合使用,使用上十分靈活。

3.命令參數(shù):

-a???--text???#不要忽略二進(jìn)制的數(shù)據(jù)。???

-A<顯示行數(shù)>???--after-context=<顯示行數(shù)>???#除了顯示符合范本樣式的那一列之外,并顯示該行之后的內(nèi)容。???

-b???--byte-offset???#在顯示符合樣式的那一行之前,標(biāo)示出該行第一個(gè)字符的編號(hào)。???

-B<顯示行數(shù)>???--before-context=<顯示行數(shù)>???#除了顯示符合樣式的那一行之外,并顯示該行之前的內(nèi)容。???

-c????--count???#計(jì)算符合樣式的列數(shù)。???

-C<顯示行數(shù)>????--context=<顯示行數(shù)>或-<顯示行數(shù)>???#除了顯示符合樣式的那一行之外,并顯示該行之前后的內(nèi)容。???

-d?<動(dòng)作>??????--directories=<動(dòng)作>???#當(dāng)指定要查找的是目錄而非文件時(shí),必須使用這項(xiàng)參數(shù),否則grep指令將回報(bào)信息并停止動(dòng)作。???

-e<范本樣式>??--regexp=<范本樣式>???#指定字符串做為查找文件內(nèi)容的樣式。???

-E??????--extended-regexp???#將樣式為延伸的普通表示法來(lái)使用。???

-f<規(guī)則文件>??--file=<規(guī)則文件>???#指定規(guī)則文件,其內(nèi)容含有一個(gè)或多個(gè)規(guī)則樣式,讓grep查找符合規(guī)則條件的文件內(nèi)容,格式為每行一個(gè)規(guī)則樣式。???

-F???--fixed-regexp???#將樣式視為固定字符串的列表。???

-G???--basic-regexp???#將樣式視為普通的表示法來(lái)使用。???

-h???--no-filename???#在顯示符合樣式的那一行之前,不標(biāo)示該行所屬的文件名稱。???

-H???--with-filename???#在顯示符合樣式的那一行之前,表示該行所屬的文件名稱。???

-i????--ignore-case???#忽略字符大小寫的差別。???

-l????--file-with-matches???#列出文件內(nèi)容符合指定的樣式的文件名稱。???

-L???--files-without-match???#列出文件內(nèi)容不符合指定的樣式的文件名稱。???

-n???--line-number???#在顯示符合樣式的那一行之前,標(biāo)示出該行的列數(shù)編號(hào)。???

-q???--quiet或--silent???#不顯示任何信息。???

-r???--recursive???#此參數(shù)的效果和指定“-d?recurse”參數(shù)相同。???

-s???--no-messages???#不顯示錯(cuò)誤信息。???

-v???--revert-match???#顯示不包含匹配文本的所有行。???

-V???--version???#顯示版本信息。???

-w???--word-regexp???#只顯示全字符合的列。???

-x????--line-regexp???#只顯示全列符合的列。???

-y???#此參數(shù)的效果和指定“-i”參數(shù)相同。

??

4.規(guī)則表達(dá)式:

grep的規(guī)則表達(dá)式:

^??#錨定行的開(kāi)始?如:'^grep'匹配所有以grep開(kāi)頭的行。????

$??#錨定行的結(jié)束?如:'grep$'匹配所有以grep結(jié)尾的行。????

.??#匹配一個(gè)非換行符的字符?如:'gr.p'匹配gr后接一個(gè)任意字符,然后是p。????

*??#匹配零個(gè)或多個(gè)先前字符?如:'*grep'匹配所有一個(gè)或多個(gè)空格后緊跟grep的行。????

.*???#一起用代表任意字符。???

[]???#匹配一個(gè)指定范圍內(nèi)的字符,如'[Gg]rep'匹配Grep和grep。????

[^]??#匹配一個(gè)不在指定范圍內(nèi)的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個(gè)字母開(kāi)頭,緊跟rep的行。????

\(..\)??#標(biāo)記匹配字符,如'\(love\)',love被標(biāo)記為1。????

\<??????#錨定單詞的開(kāi)始,如:'\<grep'匹配包含以grep開(kāi)頭的單詞的行。????

\>??????#錨定單詞的結(jié)束,如'grep\>'匹配包含以grep結(jié)尾的單詞的行。????

x\{m\}??#重復(fù)字符x,m次,如:'0\{5\}'匹配包含5個(gè)o的行。????

x\{m,\}??#重復(fù)字符x,至少m次,如:'o\{5,\}'匹配至少有5個(gè)o的行。????

x\{m,n\}??#重復(fù)字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10個(gè)o的行。???

\w????#匹配文字和數(shù)字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零個(gè)或多個(gè)文字或數(shù)字字符,然后是p。???

\W????#\w的反置形式,匹配一個(gè)或多個(gè)非單詞字符,如點(diǎn)號(hào)句號(hào)等。???

\b????#單詞鎖定符,如:?'\bgrep\b'只匹配grep。??

POSIX字符:

為了在不同國(guó)家的字符編碼中保持一至,POSIX(The?Portable?Operating?System?Interface)增加了特殊的字符類,如[:alnum:]是[A-Za-z0-9]的另一個(gè)寫法。要把它們放到[]號(hào)內(nèi)才能成為正則表達(dá)式,如[A-?Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符類。

[:alnum:]????#文字?jǐn)?shù)字字符???

[:alpha:]????#文字字符???

[:digit:]????#數(shù)字字符???

[:graph:]????#非空字符(非空格、控制字符)???

[:lower:]????#小寫字符???

[:cntrl:]????#控制字符???

[:print:]????#非空字符(包括空格)???

[:punct:]????#標(biāo)點(diǎn)符號(hào)???

[:space:]????#所有空白字符(新行,空格,制表符)???

[:upper:]????#大寫字符???

[:xdigit:]???#十六進(jìn)制數(shù)字(0-9,a-f,A-F)??

5.使用實(shí)例:

實(shí)例1:查找指定進(jìn)程

命令:

ps?-ef|grep?svn

輸出:

[root@localhost?~]#?ps?-ef|grep?svn

root?4943???1??????0??Dec05?????00:00:00?svnserve?-d?-r?/opt/svndata/grape/

root?16867?16838??0?19:53?pts/0????00:00:00?grep?svn

[root@localhost?~]#

說(shuō)明:

第一條記錄是查找出的進(jìn)程;第二條結(jié)果是grep進(jìn)程本身,并非真正要找的進(jìn)程。

實(shí)例2:查找指定進(jìn)程個(gè)數(shù)

命令:

ps?-ef|grep?svn?-c

ps?-ef|grep?-c?svn

輸出:

[root@localhost?~]#?ps?-ef|grep?svn?-c

2

[root@localhost?~]#?ps?-ef|grep?-c?svn?

2

[root@localhost?~]#

說(shuō)明:

實(shí)例3:從文件中讀取關(guān)鍵詞進(jìn)行搜索

命令:

cat?test.txt?|?grep?-f?test2.txt

輸出:

[root@localhost?test]#?cat?test.txt?

hnlinux

peida.cnblogs.com

ubuntu

ubuntu?linux

redhat

Redhat

linuxmint

[root@localhost?test]#?cat?test2.txt?

linux

Redhat

[root@localhost?test]#?cat?test.txt?|?grep?-f?test2.txt

hnlinux

ubuntu?linux

Redhat

linuxmint

[root@localhost?test]#

說(shuō)明:

輸出test.txt文件中含有從test2.txt文件中讀取出的關(guān)鍵詞的內(nèi)容行

實(shí)例3:從文件中讀取關(guān)鍵詞進(jìn)行搜索?且顯示行號(hào)

命令:

cat?test.txt?|?grep?-nf?test2.txt

輸出:

[root@localhost?test]#?cat?test.txt?

hnlinux

peida.cnblogs.com

ubuntu

ubuntu?linux

redhat

Redhat

linuxmint

[root@localhost?test]#?cat?test2.txt?

linux

Redhat

[root@localhost?test]#?cat?test.txt?|?grep?-nf?test2.txt

1:hnlinux

4:ubuntu?linux

6:Redhat

7:linuxmint

[root@localhost?test]#

說(shuō)明:

輸出test.txt文件中含有從test2.txt文件中讀取出的關(guān)鍵詞的內(nèi)容行,并顯示每一行的行號(hào)

實(shí)例5:從文件中查找關(guān)鍵詞

命令:

grep?'linux'?test.txt

輸出:

[root@localhost?test]#?grep?'linux'?test.txt?

hnlinux

ubuntu?linux

linuxmint

[root@localhost?test]#?grep?-n?'linux'?test.txt?

1:hnlinux

4:ubuntu?linux

7:linuxmint

[root@localhost?test]#

說(shuō)明:

實(shí)例6:從多個(gè)文件中查找關(guān)鍵詞

命令:

grep?'linux'?test.txt?test2.txt

輸出:

[root@localhost?test]#?grep?-n?'linux'?test.txt?test2.txt?

test.txt:1:hnlinux

test.txt:4:ubuntu?linux

test.txt:7:linuxmint

test2.txt:1:linux

[root@localhost?test]#?grep?'linux'?test.txt?test2.txt?

test.txt:hnlinux

test.txt:ubuntu?linux

test.txt:linuxmint

test2.txt:linux

[root@localhost?test]#

說(shuō)明:

多文件時(shí),輸出查詢到的信息內(nèi)容行時(shí),會(huì)把文件的命名在行最前面輸出并且加上":"作為標(biāo)示符

實(shí)例7:grep不顯示本身進(jìn)程

命令:

ps?aux|grep?\[s]sh

ps?aux?|?grep?ssh?|?grep?-v?"grep"

輸出:

[root@localhost?test]#?ps?aux|grep?ssh

root???2720??0.0??0.0??62656??1212????????Ss???Nov02???0:00?/usr/sbin/sshd

root??16834??0.0??0.0??88088??3288????????Ss???19:53???0:00?sshd:?root@pts/0?

root??16901??0.0??0.0??61180???764?pts/0??S+???20:31???0:00?grep?ssh

[root@localhost?test]#?ps?aux|grep?\[s]sh]

[root@localhost?test]#?ps?aux|grep?\[s]sh

root???2720??0.0??0.0??62656??1212????????Ss???Nov02???0:00?/usr/sbin/sshd

root??16834??0.0??0.0??88088??3288????????Ss???19:53???0:00?sshd:?root@pts/0?

[root@localhost?test]#?ps?aux?|?grep?ssh?|?grep?-v?"grep"

root???2720??0.0??0.0??62656??1212????????Ss???Nov02???0:00?/usr/sbin/sshd

root??16834??0.0??0.0??88088??3288????????Ss???19:53???0:00?sshd:?root@pts/0

說(shuō)明:

實(shí)例8:找出已u開(kāi)頭的行內(nèi)容

命令:

cat?test.txt?|grep?^u

輸出:

[root@localhost?test]#?cat?test.txt?|grep?^u

ubuntu

ubuntu?linux

[root@localhost?test]#

說(shuō)明:

實(shí)例9:輸出非u開(kāi)頭的行內(nèi)容

命令:

cat?test.txt?|grep?^[^u]

輸出:

[root@localhost?test]#?cat?test.txt?|grep?^[^u]

hnlinux

peida.cnblogs.com

redhat

Redhat

linuxmint

[root@localhost?test]#

說(shuō)明:

實(shí)例10:輸出以hat結(jié)尾的行內(nèi)容

命令:

cat?test.txt?|grep?hat$

輸出:

[root@localhost?test]#?cat?test.txt?|grep?hat$

redhat

Redhat

[root@localhost?test]#

說(shuō)明:

實(shí)例11:輸出ip地址

命令:

?????ifconfig?eth0|grep?-E?"([0-9]{1,3}\.){3}[0-9]"

輸出:

[root@localhost?test]#?ifconfig?eth0|grep?"[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"

??????????inet?addr:192.168.120.204??Bcast:192.168.120.255??Mask:255.255.255.0

[root@localhost?test]#?ifconfig?eth0|grep?-E?"([0-9]{1,3}\.){3}[0-9]"

??????????inet?addr:192.168.120.204??Bcast:192.168.120.255??Mask:255.255.255.0

[root@localhost?test]#

說(shuō)明:

實(shí)例12:顯示包含ed或者at字符的內(nèi)容行

命令:

cat?test.txt?|grep?-E?"ed|at"

輸出:

[root@localhost?test]#?cat?test.txt?|grep?-E?"peida|com"

peida.cnblogs.com

[root@localhost?test]#?cat?test.txt?|grep?-E?"ed|at"

redhat

Redhat

[root@localhost?test]#

說(shuō)明:

實(shí)例13:顯示當(dāng)前目錄下面以.txt?結(jié)尾的文件中的所有包含每個(gè)字符串至少有7個(gè)連續(xù)小寫字符的字符串的行

命令:

grep?'[a-z]\{7\}'?*.txt

輸出:

[root@localhost?test]#?grep?'[a-z]\{7\}'?*.txt

test.txt:hnlinux

test.txt:peida.cnblogs.com

test.txt:linuxmint

[root@localhost?test]#

?

實(shí)例14:日志文件過(guò)大,不好查看,我們要從中查看自己想要的內(nèi)容,或者得到同一類數(shù)據(jù),比如說(shuō)沒(méi)有404日志信息的

命令:

grep?'.'?access1.log|grep?-Ev?'404'?>?access2.log

grep?'.'?access1.log|grep?-Ev?'(404|/photo/|/css/)'?>?access2.log

grep?'.'?access1.log|grep?-E?'404'?>?access2.log

輸出:

[root@localhost?test]#?grep?“.”access1.log|grep?-Ev?“404”?>?access2.log

說(shuō)明:上面3句命令前面兩句是在當(dāng)前目錄下對(duì)access1.log文件進(jìn)行查找,找到那些不包含404的行,把它們放到access2.log中,后面去掉’v’,即是把有404的行放入access2.log

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]

1shell將一個(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

$

?2shell刪除第一行、最后一行或者增加刪除某行{^表示開(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

3shell中的空格/空行

<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)題。

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