成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

linux中文本處理命令 linux 文本編輯命令

linux常用的命令有哪些

Linux運(yùn)維人員必會(huì)的120個(gè)命令

成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、岷縣網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)商城網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為岷縣等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

來(lái)自《跟老男孩學(xué)Linux運(yùn)維:核心系統(tǒng)命令實(shí)戰(zhàn)》一書

前言

第1章 Linux命令行簡(jiǎn)介 / 1

1.1Linux命令行概述 / 1

1.2在Linux命令行下查看命令幫助 / 4

1.3Linux shutdown reboot halt / 9

關(guān)機(jī):

shutdown -h now

halt

init 0

第2章 文件和目錄操作命令 / 13

2.1pwd:顯示當(dāng)前所在的位置 / 13

2.2cd:切換目錄 / 16

2.3tree:以樹(shù)形結(jié)構(gòu)顯示目錄下的內(nèi)容 / 18

2.4mkdir:創(chuàng)建目錄 / 22

2.5touch:創(chuàng)建空文件或改變文件的時(shí)間戳屬性 / 27

2.6ls:顯示目錄下的內(nèi)容及相關(guān)屬性信息 / 30

2.7cp:復(fù)制文件或目錄 / 39

2.8mv:移動(dòng)或重命名文件 / 42

2.9rm:刪除文件或目錄 / 45

2.10rmdir:刪除空目錄 / 48

2.11ln:硬鏈接與軟鏈接 / 49

2.12readlink:查看符號(hào)鏈接文件的內(nèi)容 / 54

2.13find:查找目錄下的文件 / 55

2.14xargs:將標(biāo)準(zhǔn)輸入轉(zhuǎn)換成命令行參數(shù) / 68

2.15rename:重命名文件 / 71

2.16basename:顯示文件名或目錄名 / 72

2.17dirname:顯示文件或目錄路徑 / 72

2.18chattr:改變文件的擴(kuò)展屬性 / 73

2.19lsattr:查看文件擴(kuò)展屬性 / 75

2.20file:顯示文件的類型 / 76

2.21md5sum:計(jì)算和校驗(yàn)文件的MD5值 / 77

2.22chown:改變文件或目錄的用戶和用戶組 / 80

2.23chmod:改變文件或目錄權(quán)限 / 81

2.24chgrp:更改文件用戶組 / 85

2.25umask:顯示或設(shè)置權(quán)限掩碼 / 86

2.26老男孩從新手成為技術(shù)大牛的心法 / 90

第3章 文件過(guò)濾及內(nèi)容編輯處理命令 / 91

3.1cat:合并文件或查看文件內(nèi)容 / 91

3.2tac:反向顯示文件內(nèi)容 / 103

3.3more:分頁(yè)顯示文件內(nèi)容 / 104

3.4less:分頁(yè)顯示文件內(nèi)容 / 107

3.5head:顯示文件內(nèi)容頭部 / 109

3.6tail:顯示文件內(nèi)容尾部 / 111

3.7tailf:跟蹤日志文件 / 114

3.8cut:從文本中提取一段文字并輸出 / 115

3.9split:分割文件 / 117

3.10paste:合并文件 / 118

3.11sort:文本排序 / 123

3.12join:按兩個(gè)文件的相同字段合并 / 127

3.13uniq:去除重復(fù)行 / 129

3.14wc:統(tǒng)計(jì)文件的行數(shù)、單詞數(shù)或字節(jié)數(shù) / 131

3.15iconv:轉(zhuǎn)換文件的編碼格式 / 133

3.16dos2unix:將DOS格式文件轉(zhuǎn)換成UNIX格式 / 134

3.17diff:比較兩個(gè)文件的不同 / 135

3.18vimdiff:可視化比較工具 / 138

3.19rev:反向輸出文件內(nèi)容 / 139

3.20tr:替換或刪除字符 / 140

3.21od:按不同進(jìn)制顯示文件 / 143

3.22tee:多重定向 / 145

3.23vi/vim:純文本編輯器 / 147

3.24老男孩逆襲思想:做Linux運(yùn)維的多個(gè)好處 / 152

第4章 文本處理三劍客 / 153

4.1grep:文本過(guò)濾工具 / 153

4.2sed:字符流編輯器 / 159

4.3awk基礎(chǔ)入門 / 165

第5章 Linux信息顯示與搜索文件命令 / 176

5.1uname:顯示系統(tǒng)信息 / 176

5.2hostname:顯示或設(shè)置系統(tǒng)的主機(jī)名 / 178

5.3dmesg:系統(tǒng)啟動(dòng)異常診斷 / 179

5.4stat:顯示文件或文件系統(tǒng)狀態(tài) / 181

5.5du:統(tǒng)計(jì)磁盤空間使用情況 / 183

5.6date:顯示與設(shè)置系統(tǒng)時(shí)間 / 186

5.7echo:顯示一行文本 / 190

5.8watch:監(jiān)視命令執(zhí)行情況 / 193

5.9which:顯示命令的全路徑 / 195

5.10whereis:顯示命令及其相關(guān)文件全路徑 / 196

5.11locate:快速定位文件路徑 / 197

5.12updatedb:更新mlocate數(shù)據(jù)庫(kù) / 199

5.13老男孩逆襲思想:新手在工作中如何問(wèn)問(wèn)題不會(huì)被鄙視 / 200

第6章 文件備份與壓縮命令 / 201

6.1tar:打包備份 / 201

6.2gzip:壓縮或解壓文件 / 208

6.3zip:打包和壓縮文件 / 211

6.4unzip:解壓zip文件 / 212

6.5scp:遠(yuǎn)程文件復(fù)制 / 214

6.6rsync:文件同步工具 / 216

6.7老男孩逆襲思想:新手如何高效地提問(wèn) / 220

第7章 Linux用戶管理及用戶信息查詢命令 / 222

7.1 useradd:創(chuàng)建用戶 / 222

7.2usermod:修改用戶信息 / 227

7.3userdel:刪除用戶 / 229

7.4groupadd:創(chuàng)建新的用戶組 / 230

7.5groupdel:刪除用戶組 / 231

7.6passwd:修改用戶密碼 / 232

7.7chage:修改用戶密碼有效期 / 237

7.8chpasswd:批量更新用戶密碼 / 238

7.9su:切換用戶 / 240

7.10visudo:編輯sudoers文件 / 242

7.11sudo:以另一個(gè)用戶身份執(zhí)行命令 / 244

7.12id:顯示用戶與用戶組的信息 / 248

7.13w:顯示已登錄用戶信息 / 249

7.14who:顯示已登錄用戶信息 / 250

7.15users:顯示已登錄用戶 / 252

7.16whoami:顯示當(dāng)前登錄的用戶名 / 253

7.17last:顯示用戶登錄列表 / 253

7.18lastb:顯示用戶登錄失敗的記錄 / 254

7.19lastlog:顯示所有用戶的最近登錄記錄 / 255

第8章 Linux磁盤與文件系統(tǒng)管理命令 / 257

8.1fdisk:磁盤分區(qū)工具 / 257

8.2partprobe:更新內(nèi)核的硬盤分區(qū)表信息 / 265

8.3tune2fs:調(diào)整ext2/ext3/ext4文件系統(tǒng)參數(shù) / 266

8.4parted:磁盤分區(qū)工具 / 268

8.5mkfs:創(chuàng)建Linux文件系統(tǒng) / 272

8.6dumpe2fs:導(dǎo)出ext2/ext3/ext4文件系統(tǒng)信息 / 274

8.7resize2fs:調(diào)整ext2/ext3/ext4文件系統(tǒng)大小 / 275

8.8fsck:檢查并修復(fù)Linux文件系統(tǒng) / 278

8.9dd:轉(zhuǎn)換或復(fù)制文件 / 281

8.10mount:掛載文件系統(tǒng) / 284

8.11umount:卸載文件系統(tǒng) / 288

8.12df:報(bào)告文件系統(tǒng)磁盤空間的使用情況 / 289

8.13mkswap:創(chuàng)建交換分區(qū) / 293

8.14swapon:激活交換分區(qū) / 294

8.15swapoff:關(guān)閉交換分區(qū) / 295

8.16sync:刷新文件系統(tǒng)緩沖區(qū) / 296

第9章 Linux進(jìn)程管理命令 / 298

9.1ps:查看進(jìn)程 / 298

9.2pstree:顯示進(jìn)程狀態(tài)樹(shù) / 305

9.3pgrep:查找匹配條件的進(jìn)程 / 306

9.4kill:終止進(jìn)程 / 307

9.5killall:通過(guò)進(jìn)程名終止進(jìn)程 / 310

9.6pkill:通過(guò)進(jìn)程名終止進(jìn)程 / 311

9.7top:實(shí)時(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況 / 313

9.8nice:調(diào)整程序運(yùn)行時(shí)的優(yōu)先級(jí) / 320

9.9renice:調(diào)整運(yùn)行中的進(jìn)程的優(yōu)先級(jí) / 323

9.10nohup:用戶退出系統(tǒng)進(jìn)程繼續(xù)工作 / 324

9.11strace:跟蹤進(jìn)程的系統(tǒng)調(diào)用 / 325

9.12ltrace:跟蹤進(jìn)程調(diào)用庫(kù)函數(shù) / 332

9.13runlevel:輸出當(dāng)前運(yùn)行級(jí)別 / 334

9.14init:初始化Linux進(jìn)程 / 335

9.15service:管理系統(tǒng)服務(wù) / 335

第10章 Linux網(wǎng)絡(luò)管理命令 / 338

10.1ifconfig:配置或顯示網(wǎng)絡(luò)接口信息 / 338

10.2ifup:激活網(wǎng)絡(luò)接口 / 343

ifup eth0

10.3ifdown:禁用網(wǎng)絡(luò)接口 / 343

ifdown eth0

service network restart(/etc/init.d/network restart) 激活整個(gè)網(wǎng)絡(luò),所有網(wǎng)卡。

10.4route:顯示或管理路由表 / 344

10.5arp:管理系統(tǒng)的arp緩存 / 350

10.6ip:網(wǎng)絡(luò)配置工具 / 351

10.7netstat:查看網(wǎng)絡(luò)狀態(tài) / 358

10.8ss:查看網(wǎng)絡(luò)狀態(tài) / 362

10.9ping:測(cè)試主機(jī)之間網(wǎng)絡(luò)的連通性 / 363

10.10traceroute:追蹤數(shù)據(jù)傳輸路由狀況 / 366

10.11arping:發(fā)送arp請(qǐng)求 / 367

10.12telnet:遠(yuǎn)程登錄主機(jī) / 369

10.13nc:多功能網(wǎng)絡(luò)工具 / 370

10.14ssh:安全地遠(yuǎn)程登錄主機(jī) / 373

10.15wget:命令行下載工具 / 376

10.16mailq:顯示郵件傳輸隊(duì)列 / 379

10.17mail:發(fā)送和接收郵件 / 381

10.18nslookup:域名查詢工具 / 386

10.19dig:域名查詢工具 / 389

10.20host:域名查詢工具 / 393

10.21nmap:網(wǎng)絡(luò)探測(cè)工具和安全/端口掃描器 / 394

10.22tcpdump:監(jiān)聽(tīng)網(wǎng)絡(luò)流量 / 398

第11章 Linux系統(tǒng)管理命令 / 407

11.1lsof:查看進(jìn)程打開(kāi)的文件 / 407

11.2uptime:顯示系統(tǒng)的運(yùn)行時(shí)間及負(fù)載 / 411

11.3free:查看系統(tǒng)內(nèi)存信息 / 411

11.4iftop:動(dòng)態(tài)顯示網(wǎng)絡(luò)接口流量信息 / 413

11.5vmstat:虛擬內(nèi)存統(tǒng)計(jì) / 415

11.6mpstat:CPU信息統(tǒng)計(jì) / 419

11.7iostat:I/O信息統(tǒng)計(jì) / 420

11.8iotop:動(dòng)態(tài)顯示磁盤I/O統(tǒng)計(jì)信息 / 423

11.9sar:收集系統(tǒng)信息 / 425

11.10chkconfig:管理開(kāi)機(jī)服務(wù) / 430

11.11ntsysv:管理開(kāi)機(jī)服務(wù) / 433

11.12 setup:系統(tǒng)管理工具 / 434

11.13ethtool:查詢網(wǎng)卡參數(shù) / 436

11.14mii-tool:管理網(wǎng)絡(luò)接口的狀態(tài) / 437

11.19rpm:RPM包管理器 / 443

11.20yum:自動(dòng)化RPM包管理工具 / 446

top命令

第12章 Linux系統(tǒng)常用內(nèi)置命令 / 450

12.1Linux內(nèi)置命令概述 / 450

12.2Linux內(nèi)置命令簡(jiǎn)介 / 450

12.3Linux常用內(nèi)置命令實(shí)例 / 452

linux:文本處理系列-1.行截取

(自己)常用的文本文件的行處理命令

示例文件:test.vcf

1、head -n 10 test.vcf

head : 默認(rèn)是提取文件的前10行,-n 參數(shù)可以設(shè)定選擇文件的前n行

2、tial -n 10 test.vcf

tail : 默認(rèn)是提取文件的末尾10行, -n 參數(shù)可以設(shè)定選擇文件末尾的n行

3、sed -n '10,20p' test.vcf

sed -n : 隨意選擇需要查看的行

sed命令是一個(gè)面向行處理的編輯器,可以和正則表達(dá)式配合使用,附上較全面的sed命令使用教程。

4、awk 截取行的指定長(zhǎng)度字符串

less test.gz |awk '{if(NR%2==1){print}else{print substr($1,1,75)}}' | gzip -c test.part.gz

說(shuō)明:對(duì)test.gz文件指定行截取75bp,原來(lái)是150bp

5、對(duì)n行的第三列求和,求平均值

grep -v ‘#’ test.vcf |sed -n '20,35p' |awk -F '\t' '{sum+=$3;n++}END{print sum,sum/n}'

(linux 一行命令計(jì)算速度比Python快,簡(jiǎn)單計(jì)算喜歡用linux命令)

記得隨時(shí)整理使用過(guò)的命令,沒(méi)學(xué)過(guò)linux,靠著各種帖子,隨時(shí)需要隨時(shí)補(bǔ)給,有點(diǎn)懶。

linux之文本內(nèi)容替換命令sed

sed簡(jiǎn)介:流編輯工具,用來(lái)對(duì)文本進(jìn)行過(guò)濾與替換操作。

sed流程:sed通過(guò)一次僅讀取一行內(nèi)容來(lái)對(duì)某些指令進(jìn)行處理后輸出。

1、sed通過(guò)文件或管道讀取文件內(nèi)容,但sed默認(rèn)并不直接修改源文件,而是將讀入的內(nèi)容復(fù)制到緩沖區(qū)中,稱之為模式空間。

2、所有的指令操作都是在模式空間找那個(gè)進(jìn)行

3、sed根據(jù)相應(yīng)的指令對(duì)模式空間中的內(nèi)容進(jìn)行處理并輸出結(jié)果,默認(rèn)輸出至標(biāo)準(zhǔn)輸出(即屏幕上)。

sed基本語(yǔ)法格式:

用法:sed[選項(xiàng)]...{腳本指令}[輸入文件]...

選項(xiàng): -version 顯示sed版本

-help :顯示幫助文檔

-n,-quiet,-silent靜默輸出,默認(rèn)情況下,sed程序在所有的腳本指令執(zhí)行完畢后,將自動(dòng)打印模式空間中的內(nèi)容。

-e script允許多個(gè)腳本指令被執(zhí)行

-f script-file從文件中讀取腳本指令,對(duì)編寫自動(dòng)化腳本程序很實(shí)用

-i ,-in-place 該選項(xiàng)直接修改源文件

-l N 該選項(xiàng)指定l指令可以輸出的行長(zhǎng)度,l指令為輸出非打印字符。

-posix 禁用GNU sed擴(kuò)展功能。

-r 在腳本指令中使用擴(kuò)展正則表達(dá)式。

-s,-separate 默認(rèn)情況下,sed將把輸入的多個(gè)文件名作為一個(gè)長(zhǎng)的連續(xù)的輸入流。而GNU sed則允許把它們當(dāng)作單獨(dú)的文件。

-u,-unbuffered 最低限度的緩存輸入與輸出

a,append表示追加指令;

i,insert表示插入指令;

d,delete表示刪除指令;

s,substitution表示替換指令。

sed腳本指令的基本格式是:

[地址,即路徑]命令(有些命令僅可以對(duì)一行操作,有些可以對(duì)多行操作),命令也可以用花括號(hào)進(jìn)行組合,使命令序列可以作用于同一個(gè)地址。

address{

command1

command2

command3

}

sed的基本工作方式是:

sed的替換命令s:

1、全局替換 : s/old/new/g ,其中g(shù)為全局替換,用于替換所有出現(xiàn)的次數(shù); /如果和正則匹配的內(nèi)容沖突可以使用其他符號(hào),如 : s@old@new@g

2、標(biāo)志位

為什么要有多行模式: 配置文件一般有單行出現(xiàn),但也有使用json或XML格式的配置文件,為多行出現(xiàn)。

多行模式處理命令N、D、P

Linux文本匹配命令grep與fgrep使用全解

Linux中g(shù)rep與fgrep命令的使用,兩個(gè)命令的使用都與文本的搜索與匹配相關(guān),是Linux入門學(xué)習(xí)中的基礎(chǔ)知識(shí),接下來(lái)是我為大家收集的Linux文本匹配命令grep與fgrep使用全解,希望能幫到大家。

Linux文本匹配命令grep與fgrep使用全解

grep

grep (global search regular expression(RE) and print out the line,全面搜索正則表達(dá)式并把行打印出來(lái))是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹配的行打印出來(lái)。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的擴(kuò)展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說(shuō),正則表達(dá)式中的元字符表示回其自身的字面意義,不再特殊。Linux使用GNU版本的grep。它功能更強(qiáng),可以通過(guò)-G、-E、-F命令行選項(xiàng)來(lái)使用egrep和fgrep的功能。

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

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

grep --help

匹配模式選擇:

-E, --extended-regexp 擴(kuò)展正則表達(dá)式egrep

-F, --fixed-strings 一個(gè)換行符分隔的字符串的集合fgrep

-G, --basic-regexp 基本正則

-P, --perl-regexp 調(diào)用的perl正則

-e, --regexp=PATTERN 后面根正則模式,默認(rèn)無(wú)

-f, --file=FILE 從文件中獲得匹配模式

-i, --ignore-case 不區(qū)分大小寫

-w, --word-regexp 匹配整個(gè)單詞

-x, --line-regexp 匹配整行

-z, --null-data 一個(gè) 0 字節(jié)的數(shù)據(jù)行,但不是空行

雜項(xiàng):

-s, --no-messages 不顯示錯(cuò)誤信息

-v, --invert-match 顯示不匹配的行

-V, --version 顯示版本號(hào)

--help 顯示幫助信息

--mmap use memory-mapped input if possible

輸入控制:

-m, --max-count=NUM 匹配的最大數(shù)

-b, --byte-offset 打印匹配行前面打印該行所在的塊號(hào)碼。

-n, --line-number 顯示的加上匹配所在的行號(hào)

--line-buffered 刷新輸出每一行

-H, --with-filename 當(dāng)搜索多個(gè)文件時(shí),顯示匹配文件名前綴

-h, --no-filename 當(dāng)搜索多個(gè)文件時(shí),不顯示匹配文件名前綴

--label=LABEL print LABEL as filename for standard input

-o, --only-matching 只顯示一行中匹配PATTERN 的部分

-q, --quiet, --silent 不顯示任何東西

--binary-files=TYPE 假定二進(jìn)制文件的TYPE 類型;

TYPE 可以是`binary', `text', 或`without-match'

-a, --text 匹配二進(jìn)制的東西

-I 不匹配二進(jìn)制的東西

-d, --directories=ACTION 目錄操作,讀取,遞歸,跳過(guò)

-D, --devices=ACTION 設(shè)置對(duì)設(shè)備,F(xiàn)IFO,管道的操作,讀取,跳過(guò)

-R, -r, --recursive 遞歸調(diào)用

--include=PATTERN 只查找匹配FILE_PATTERN 的文件

--exclude=PATTERN 跳過(guò)匹配FILE_PATTERN 的文件和目錄

--exclude-from=FILE 跳過(guò)所有除FILE 以外的文件

-L, --files-without-match 匹配多個(gè)文件時(shí),顯示不匹配的文件名

-l, --files-with-matches 匹配多個(gè)文件時(shí),顯示匹配的文件名

-c, --count 顯示匹配了多少次

-Z, --null 在FILE 文件最后打印空字符

文件控制:

-B, --before-context=NUM 打印匹配本身以及前面的幾個(gè)行由NUM控制

-A, --after-context=NUM 打印匹配本身以及隨后的幾個(gè)行由NUM控制

-C, --context=NUM 打印匹配本身以及隨后,前面的幾個(gè)行由NUM控制

-NUM 根-C的用法一樣的

--color[=WHEN],

--colour[=WHEN] 使用標(biāo)志高亮匹配字串;

-U, --binary 使用標(biāo)志高亮匹配字串;

-u, --unix-byte-offsets 當(dāng)CR 字符不存在,報(bào)告字節(jié)偏移(MSDOS 模式)

例:

測(cè)試文件

復(fù)制代碼

代碼如下:

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa

DADddd:x:2:2:daemon:/sbin:/bin/false

mail:x:8:12:mail:/var/spool/mail:/bin/false

ftp:x:14:11:ftp:/home/ftp:/bin/false

nobody:$:99:99:nobody:/:/bin/false

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

http:x:33:33::/srv/http:/bin/false

dbus:x:81:81:System message bus:/:/bin/false

hal:x:82:82:HAL daemon:/:/bin/false

mysql:x:89:89::/var/lib/mysql:/bin/false

aaa:x:1001:1001::/home/aaa:/bin/bash

ba:x:1002:1002::/home/zhangy:/bin/bash

test:x:1003:1003::/home/test:/bin/bash

@zhangying:*:1004:1004::/home/test:/bin/bash

policykit:x:102:1005:Po

a,匹配含有root的行

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# grep root test

root:x:0:0:root:/root:/bin/bash

b,匹配以root開(kāi)頭或者以zhang開(kāi)頭的行,注意反斜杠

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# cat test |grep '^\(root\|zhang\)'

root:x:0:0:root:/root:/bin/bash

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

c,匹配以root開(kāi)頭或者以zhang開(kāi)頭的行,注意反斜杠,根上面一個(gè)例子一樣,-e默認(rèn)是省去的

[root@krlcgcms01 test]# cat test |grep -e '^\(root\|zhang\)'

root:x:0:0:root:/root:/bin/bash

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

d,匹配以zhang開(kāi)頭,只含有字母

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# echo 'zhangying' |grep '^zhang[a-z]*$'

zhangying

e,匹配以bin開(kāi)頭的行,用的egrep,在這里可以換成-F,-G

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# cat test |grep -E '^bin'

bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa

f,在匹配的行前面加上該行在文件中,或者輸出中所在的行號(hào)

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# cat test|grep -n zhangy

7:zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

13:ba:x:1002:1002::/home/zhangy:/bin/bash

15:@zhangying:*:1004:1004::/home/test:/bin/bash

g,不匹配以bin開(kāi)頭的行,并顯示行號(hào)

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# cat test|grep -nv '^bin'

root:x:0:0:root:/root:/bin/bash

DADddd:x:2:2:daemon:/sbin:/bin/false

mail:x:8:12:mail:/var/spool/mail:/bin/false

ftp:x:14:11:ftp:/home/ftp:/bin/false

nobody:$:99:99:nobody:/:/bin/false

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

http:x:33:33::/srv/http:/bin/false

dbus:x:81:81:System message bus:/:/bin/false

hal:x:82:82:HAL daemon:/:/bin/false

mysql:x:89:89::/var/lib/mysql:/bin/false

aaa:x:1001:1001::/home/aaa:/bin/bash

ba:x:1002:1002::/home/zhangy:/bin/bash

test:x:1003:1003::/home/test:/bin/bash

@zhangying:*:1004:1004::/home/test:/bin/bash

policykit:x:102:1005:Po

h,顯示匹配的個(gè)數(shù),不顯示內(nèi)容

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# cat test|grep -c zhang

3

i,匹配system,沒(méi)有加-i沒(méi)有匹配到東西。

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# grep system test

[root@krlcgcms01 test]# grep -ni system test

9:dbus:x:81:81:System message bus:/:/bin/false

j,匹配zhan沒(méi)有匹配到東西,匹配zhangy能匹配到,因?yàn)樵趖est文件中,有zhangy這個(gè)單詞

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# cat test|grep -w zhan

[root@krlcgcms01 test]# cat test|grep -w zhangy

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

ba:x:1002:1002::/home/zhangy:/bin/bash

k,在這里-x后面東西,和輸出中的整行相同時(shí),才會(huì)輸出

[root@krlcgcms01 test]# echo "aaaaaa" |grep -x aaa

[root@krlcgcms01 test]# echo "aaaa" |grep -x aaaa

aaaa

l,最多只匹配一次,如果把-m 1去掉的話,會(huì)有三個(gè)

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# cat test |grep -m 1 zhang

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

m,匹配行的前面顯示塊號(hào),這個(gè)塊號(hào)是干什么的,不知道,有誰(shuí)知道可否告訴我一下

復(fù)制代碼

代碼如下:

[apacheuser@krlcgcms01 test]$ cat test |grep -b zha

241:zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

480:ba:x:1002:1002::/home/zhangy:/bin/bash

558:@zhangying:*:1004:1004::/home/test:/bin/bash

n,多文件匹配時(shí),在匹配的行前面加上文件名

復(fù)制代碼

代碼如下:

[apacheuser@krlcgcms01 test]$ grep -H 'root' test test2 testbak

test:root:x:0:0:root:/root:/bin/bash

test2:root

testbak:root:x:0:0:root:/root:/bin/bash

o,多文件匹配時(shí),在匹配的行前面不加上文件名

復(fù)制代碼

代碼如下:

[apacheuser@krlcgcms01 test]$ grep -h 'root' test test2 testbak

root:x:0:0:root:/root:/bin/bash

root

root:x:0:0:root:/root:/bin/bash

p,多文件匹配時(shí),顯示匹配文件的文件名

復(fù)制代碼

代碼如下:

[apacheuser@krlcgcms01 test]$ grep -l 'root' test test2 testbak DAta

test

test2

testbak

q,沒(méi)有-o時(shí),有一行匹配,這一行里面有3個(gè)root,加上-o后,這個(gè)3個(gè)root就出來(lái)了

復(fù)制代碼

代碼如下:

[apacheuser@krlcgcms01 test]$ grep 'root' test

root:x:0:0:root:/root:/bin/bash

[apacheuser@krlcgcms01 test]$ grep -o 'root' test

root

root

root

r,遞歸顯示匹配的內(nèi)容,在test目錄下面建個(gè)mytest目錄,copy test目錄下面的test文件到mytest下面,能看到上面的結(jié)果

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# grep test -R /tmp/test/mytest

/tmp/test/mytest/test:test:x:1003:1003::/home/test:/bin/bash

/tmp/test/mytest/test:@zhangying:*:1004:1004::/home/test:/bin/bash

s,顯示匹配root后面的3行

復(fù)制代碼

代碼如下:

[root@krlcgcms01 test]# cat test |grep -A 3 root

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa

daemon:x:2:2:daemon:/sbin:/bin/false

mail:x:8:12:mail:/var/spool/mail:/bin/false

fgrep

用法: fgrep [選項(xiàng)]... PATTERN [FILE]...

在每個(gè) FILE 或是標(biāo)準(zhǔn)輸入中查找 PATTERN。

PATTERN 是一組由斷行符分隔的定長(zhǎng)字符串。

例如: fgrep -i 'hello world' menu.h main.c

正則表達(dá)式選擇與解釋:

-e, --regexp=PATTERN 用 PATTERN 來(lái)進(jìn)行匹配操作

-f, --file=FILE 從 FILE 中取得 PATTERN

-i, --ignore-case 忽略大小寫

-w, --word-regexp 強(qiáng)制 PATTERN 僅完全匹配字詞

-x, --line-regexp 強(qiáng)制 PATTERN 僅完全匹配一行

-z, --null-data 一個(gè) 0 字節(jié)的數(shù)據(jù)行,但不是空行

雜項(xiàng):

-s, --no-messages 不顯示錯(cuò)誤信息

-v, --invert-match 選中不匹配的行

-V, --version 顯示版本信息并退出

--help 顯示此幫助并退出

--mmap 忽略向后兼容性

Output control:

-m, --max-count=NUM 匹配的最大數(shù)

-b, --byte-offset 打印匹配行前面打印該行所在的塊號(hào)碼

-n, --line-number 顯示的加上匹配所在的行號(hào)

--line-buffered 刷新輸出每一行

-H, --with-filename 當(dāng)搜索多個(gè)文件時(shí),顯示匹配文件名前綴

-h, --no-filename 當(dāng)搜索多個(gè)文件時(shí),不顯示匹配文件名前綴

--label=LABEL use LABEL as the standard input file name prefix

-o, --only-matching 只顯示一行中匹配PATTERN 的部分

-q, --quiet, --silent 不顯示所有輸出

--binary-files=TYPE 假定二進(jìn)制文件的TYPE 類型;

TYPE 可以是`binary', `text', 或`without-match'

-a, --text 等同于 --binary-files=text

-I 等同于 --binary-files=without-match

-d, --directories=ACTION 操作目錄的方式;

ACTION 可以是`read', `recurse',或`skip'

-D, --devices=ACTION 操作設(shè)備、先入先出隊(duì)列、套接字的方式;

ACTION 可以是`read'或`skip'

-R, -r, --recursive 等同于 --directories=recurse

--include=FILE_PATTERN 只查找匹配FILE_PATTERN 的文件

--exclude=FILE_PATTERN 跳過(guò)匹配FILE_PATTERN 的文件和目錄

--exclude-from=FILE 跳過(guò)所有除FILE 以外的文件

--exclude-dir=PATTERN 跳過(guò)所有匹配PATTERN 的目錄。

-L, --files-without-match 只打印不匹配FILEs 的文件名

-l, --files-with-matches 只打印匹配FILES 的文件名

-c, --count 只打印每個(gè)FILE 中的匹配行數(shù)目

-T, --initial-tab 行首tabs 分隔(如有必要)

-Z, --null 在FILE 文件最后打印空字符

文件控制:

-B, --before-context=NUM 打印以文本起始的NUM 行

-A, --after-context=NUM 打印以文本結(jié)尾的NUM 行

-C, --context=NUM 打印輸出文本NUM 行

-NUM 等同于 --context=NUM

--color[=WHEN],

--colour[=WHEN] 使用標(biāo)志高亮匹配字串;

WHEN 可以是`always', `never'或`auto'

-U, --binary 不要清除行尾的CR 字符(MSDOS 模式)

-u, --unix-byte-offsets 當(dāng)CR 字符不存在,報(bào)告字節(jié)偏移(MSDOS 模式)

‘fgrep’已不再使用了;請(qǐng)用 ‘grep -F’代替。

不帶 FILE 參數(shù),或是 FILE 為 -,將讀取標(biāo)準(zhǔn)輸入。如果少于兩個(gè) FILE 參數(shù)

就要默認(rèn)使用 -h 參數(shù)。如果選中任意一行,那退出狀態(tài)為 0,否則為 1;

如果有錯(cuò)誤產(chǎn)生,且未指定 -q 參數(shù),那退出狀態(tài)為 2。

例:

復(fù)制代碼

代碼如下:

[root@linux test]# cat abc.sh |fgrep a #匹配含有a的

看了“Linux文本匹配命令grep與fgrep使用全解”還想看:

1. linux grep命令詳解

2. 全面解析Linux的grep命令中正則表達(dá)式的用法

3. Linux下如何使用grep命令搜索多個(gè)單詞

4. 開(kāi)發(fā)人員常用什么linux命令

Linux系統(tǒng)基礎(chǔ)操作指令

摘要:Linux指令常用結(jié)構(gòu) :Command [-option] [argument]

Command:即是要運(yùn)行的命令的本身,說(shuō)白了就是一個(gè)程序;

Option:是選項(xiàng)(可選),選項(xiàng)是控制命令運(yùn)行狀態(tài)和行為的(可多個(gè)選項(xiàng)一起,如ls -al);

Argument:是參數(shù)(可選),是命令要操作對(duì)象如文件、路徑、數(shù)據(jù)、目錄等;

在指令的第一部分按[tab]鍵一下為[命令補(bǔ)全],兩下為所有命令選擇;

一、 Linux系統(tǒng)操作指令

1、開(kāi)關(guān)機(jī)

2、查看系統(tǒng)信息

3、查看系統(tǒng)性能

4、查看磁盤指標(biāo)

二、 Linux目錄文件操作指令

1、目錄文件

2、文件相關(guān)權(quán)限

3、文本處理

三、Linux用戶權(quán)限操作指令

四、Linux壓縮解壓指令

五、Linux軟件安裝指令

文本處理|專項(xiàng)】Linux數(shù)據(jù)文本處理工具(3)'>【shell筆記>文本處理|專項(xiàng)】Linux數(shù)據(jù)文本處理工具(3)

sed 命令從文本或者標(biāo)準(zhǔn)輸入中每次讀入一行數(shù)據(jù)。

我們先從簡(jiǎn)單的實(shí)例出發(fā),看下該命令怎么將一列中的 chrm12 , chrom2 等轉(zhuǎn)換成 chr12 , chr2 的格式。

雖然示例文件處理僅僅只有三行,但我們可以將這種處理方式運(yùn)用到上G甚至更大的數(shù)據(jù)文件中,而不用打開(kāi)整個(gè)文件進(jìn)行處理。并且,可以借助重導(dǎo)向?qū)崿F(xiàn)對(duì)數(shù)據(jù)處理結(jié)果的輸出。

sed 替換命令采用的格式是

sed 會(huì)自動(dòng)搜索符合 pattern 的字符串,然后修改為 replacement (我們想要修改后的樣子)。一般默認(rèn) sed 只替換第一個(gè)匹配的 pattern ,我們可以通過(guò)添加全局標(biāo)識(shí) g 將其應(yīng)用到數(shù)據(jù)的所有行中。

如果我們想要忽略匹配的大小寫,使用 i 標(biāo)識(shí)

默認(rèn) sed 命令支持基本的POSIX正則表達(dá)式(BRE),可以通過(guò) -E 選項(xiàng)進(jìn)行拓展(ERE)。很多的Linux命令都這種方式,像常用的 grep 命令。

再看一個(gè)實(shí)例,如果我們想把 chr1:28647389-28659480 這樣格式的文字轉(zhuǎn)換為三列,可以使用:

我們聚焦在第二個(gè)命令 sed 上。初看雜亂無(wú)章,但是從最大的結(jié)構(gòu)看依舊是

先看 pattern 部分,這是由幾個(gè)簡(jiǎn)單正則表達(dá)式組成的復(fù)合體,幾個(gè) () 括起來(lái)的字符串可以單獨(dú)看。第一個(gè)匹配 chr 加上一個(gè)非冒號(hào)的字符,第二個(gè)和第三個(gè)都是匹配多個(gè)數(shù)字。最開(kāi)始的 ^ 表示以 chr 起始(前面沒(méi)有字符),各個(gè)括號(hào)中間的是對(duì)應(yīng)的字符。整體的 pattern 的目的就是為了找到文本中符合這種模式的字符串,如果只是想把這個(gè)模式找出來(lái)的話,幾個(gè)括號(hào)可以不用加。顯然這幾個(gè)括號(hào)的作用就是將它們劃分成多個(gè)域,幫助 sed 進(jìn)行處理??梢钥吹?replacement 部分存在 \1 , \2 , \3 ,它恰好對(duì)應(yīng) () 的順序。這樣我們?cè)谥虚g插入 \t 制表符,就可以完成我們想要的功能:將原字符串轉(zhuǎn)換為三列。

我本身對(duì)字符串并不是非常熟悉,懂一些元字符,可能講解的不是很到位。不熟悉正則表達(dá)式的朋友,可以學(xué)習(xí)和參考下 學(xué)習(xí)正則表達(dá)式 ,是我從Github上Copy到的非常好的學(xué)習(xí)資料,有興趣也可以Fork學(xué)習(xí)。

上山的路總是有很多條,我們下面看下其他實(shí)現(xiàn)該功能的辦法:

這三種方式看起來(lái)都非常簡(jiǎn)單有效。它處理字符串的思路不是從匹配pattern然后替換入手,不對(duì),應(yīng)該說(shuō)是不是從匹配所有pattern然后替換入手。處理的關(guān)鍵是只處理字符串中看似無(wú)用的連字符 : 與 - ,將其替換成制表符從而輕松完成分割。

sed 's/:/\t/' | sed 's/-/\t/' 可以通過(guò) -e 選項(xiàng)寫為 sed -e 's/:/\t/' -e 's/-/\t/' ,效果等價(jià)。

默認(rèn) sed 命令支持基本的POSIX正則表達(dá)式(BRE),可以通過(guò) -E 選項(xiàng)進(jìn)行拓展(ERE)。很多的Linux命令都這種方式,像常用的 grep 命令。

再看一個(gè)實(shí)例,如果我們想把 chr1:28647389-28659480 這樣格式的文字轉(zhuǎn)換為三列,可以使用:

我們聚焦在第二個(gè)命令 sed 上。初看雜亂無(wú)章,但是從最大的結(jié)構(gòu)看依舊是

先看 pattern 部分,這是由幾個(gè)簡(jiǎn)單正則表達(dá)式組成的復(fù)合體,幾個(gè) () 括起來(lái)的字符串可以單獨(dú)看。第一個(gè)匹配 chr 加上一個(gè)非冒號(hào)的字符,第二個(gè)和第三個(gè)都是匹配多個(gè)數(shù)字。最開(kāi)始的 ^ 表示以 chr 起始(前面沒(méi)有字符),各個(gè)括號(hào)中間的是對(duì)應(yīng)的字符。整體的 pattern 的目的就是為了找到文本中符合這種模式的字符串,如果只是想把這個(gè)模式找出來(lái)的話,幾個(gè)括號(hào)可以不用加。顯然這幾個(gè)括號(hào)的作用就是將它們劃分成多個(gè)域,幫助 sed 進(jìn)行處理??梢钥吹?replacement 部分存在 \1 , \2 , \3 ,它恰好對(duì)應(yīng) () 的順序。這樣我們?cè)谥虚g插入 \t 制表符,就可以完成我們想要的功能:將原字符串轉(zhuǎn)換為三列。

我本身對(duì)字符串并不是非常熟悉,懂一些元字符,可能講解的不是很到位。不熟悉正則表達(dá)式的朋友,可以學(xué)習(xí)和參考下 學(xué)習(xí)正則表達(dá)式 ,是我從Github上Copy到的非常好的學(xué)習(xí)資料,有興趣也可以Fork學(xué)習(xí)。

上山的路總是有很多條,我們下面看下其他實(shí)現(xiàn)該功能的辦法:

這三種方式看起來(lái)都非常簡(jiǎn)單有效。它處理字符串的思路不是從匹配pattern然后替換入手,不對(duì),應(yīng)該說(shuō)是不是從匹配所有pattern然后替換入手。處理的關(guān)鍵是只處理字符串中看似無(wú)用的連字符 : 與 - ,將其替換成制表符從而輕松完成分割。

sed 's/:/\t/' | sed 's/-/\t/' 可以通過(guò) -e 選項(xiàng)寫為 sed -e 's/:/\t/' -e 's/-/\t/' ,效果等價(jià)。

默認(rèn), sed 會(huì)輸出每一行的結(jié)果,用 replacement 替換 pattern ,但實(shí)際中我們可能會(huì)因此得到不想要的結(jié)果。比如下面的這個(gè)例子。

如果我們想要抓出 gtf 文件第九列的轉(zhuǎn)錄名,可能會(huì)使用以下命令

我們可以發(fā)現(xiàn)一些沒(méi)有轉(zhuǎn)錄名行的結(jié)果是輸出整行,這可不是我們想要的。一種解決辦法是在使用 sed 之前先抓出有 transcript_id 的行。其實(shí) sed 命令本身也可以通過(guò)選項(xiàng)和參數(shù)設(shè)定解決這個(gè)問(wèn)題,這里我們可以用 -n 選項(xiàng)關(guān)閉 sed 輸出所有行,在最末的 / 后加 p 只輸出匹配項(xiàng)。

注意方括號(hào)內(nèi) ^ 是非(取反)的意思。

解釋如下:

+ 號(hào)的使用是一種非貪婪的方法。很多新手會(huì)用 * ,這是貪婪操作,往往會(huì)得不償失,需要注意喔。

使用 * 時(shí)它會(huì)盡量多地去匹配符合要求的模式。

我們也可以用 sed 命令來(lái)獲取特定范圍的行,比如說(shuō)我要取出頭10行,可以使用

20到50行

當(dāng)然 sed 的功能特性遠(yuǎn)遠(yuǎn)不止這些,有待于大家更多地挖掘。不過(guò)需要注意的是,盡量讓工具干它最擅長(zhǎng)的事情。如果是復(fù)雜地大規(guī)模計(jì)算,還是最好寫個(gè)Python腳本。

首先需要記住 連續(xù) 命令和 管道 命令的區(qū)別:前者是簡(jiǎn)單地一個(gè)一個(gè)按順序運(yùn)行程序(一般用 或者 ; );后者前一個(gè)程序的輸出結(jié)果會(huì)直接傳到下一個(gè)命令程序的輸入中(這不就是流程化操作么,用 | 分隔)。

子shell可以讓我們?cè)谝粋€(gè)獨(dú)立的shell進(jìn)程中執(zhí)行連續(xù)命令。

首先看個(gè)例子

發(fā)現(xiàn)僅僅加了個(gè)括號(hào),結(jié)果就不同了。第二個(gè)命令就用了子shell,它把兩個(gè) echo 命令放進(jìn)單獨(dú)的空間執(zhí)行后將結(jié)果傳給下游。

子shell在對(duì) gtf 文件進(jìn)行操作時(shí)有個(gè)非常有意思有用的用處。我們?nèi)绻雽?duì) gtf 文件排序,但是又想要保留文件頭部注釋信息,我們就能夠用兩次 grep 操作分別抓出注釋和非注釋信息,然后又把它結(jié)合在一起。下面看看效果,用 less 進(jìn)行檢查:

可以看到,子shell確實(shí)能夠給我們提供非常有用的操作去組合命令實(shí)現(xiàn)想要的功能。

很多生信命令行工具需要提供多個(gè)輸入和輸出參數(shù),這用在管道命令里可能會(huì)導(dǎo)致非常低效的情形(管道只接受一個(gè)標(biāo)準(zhǔn)輸入和輸出)。幸好,我們可以使用命令管道來(lái)解決此類問(wèn)題。

命名管道 ,也成為FIFO(先入先出,額,這不是隊(duì)列么:smile:)。它是一個(gè)特殊的排序文件,命名管道有點(diǎn)像文件,它可以永久保留在你的文件系統(tǒng)上(估計(jì)本質(zhì)就是文件吧~)。

我們用 mkfifo 來(lái)生成它

可以它看它權(quán)限的第一個(gè)字符是p,指代是pipe。說(shuō)明是個(gè)特殊文件。

我們像文件一樣對(duì)它進(jìn)行一些操作

比如當(dāng)使用一個(gè)生信命令行工具

in1.fq in2.fq 就可以上游輸出數(shù)據(jù)到 processing_tool 的命名管道;同理 out1.fq out2.fq 可以是命名管道用來(lái)寫進(jìn)輸出數(shù)據(jù)。

但這樣我們每次都得不停地創(chuàng)建和刪除這些文件,解決辦法是使用匿名管道,也叫進(jìn)程替換。

不能光說(shuō),看看例子就知道和理解了。

echo 命令運(yùn)行后使用了進(jìn)程替換,產(chǎn)生匿名文件,然后匿名文件被重導(dǎo)向 cat 命令。

把它用到工具上,就變成了(假定上游zcat下游執(zhí)行g(shù)rep命令)

關(guān)于Linux數(shù)據(jù)處理工具內(nèi)容全部整理發(fā)布在我的博客上。 詳情點(diǎn)擊

網(wǎng)頁(yè)標(biāo)題:linux中文本處理命令 linux 文本編輯命令
文章源于:http://jinyejixie.com/article14/docpide.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版網(wǎng)站維護(hù)、建站公司關(guān)鍵詞優(yōu)化、做網(wǎng)站、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司
买车| 开封县| 汾阳市| 汶川县| 巫溪县| 金塔县| 惠安县| 句容市| 平遥县| 昂仁县| 惠东县| 乌兰察布市| 灌阳县| 梅河口市| 山阴县| 贞丰县| 永泰县| 岳普湖县| 通江县| 灵璧县| 连州市| 拉孜县| 视频| 启东市| 霍林郭勒市| 江口县| 江华| 阳泉市| 涞源县| 马边| 永宁县| 太保市| 临泽县| 昆明市| 济源市| 兴安县| 南安市| 库尔勒市| 平塘县| 汝州市| 双鸭山市|