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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shell字符串截取总结

發布時間:2025/6/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell字符串截取总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

shell中截取字符串的方法有很多中,本人對其中幾種常用的進行整理總結。


0x01、grep

在文件中搜尋字符串匹配的行并輸出


Linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹 配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用權限是所有用戶。

grep 【選項】【指定字串】【文件】

-i 不區分大小寫

-v 排除指定字串

-c:只輸出匹配行的計數。

-n:顯示匹配行及 行號。

-s:不顯示不存在或無匹配文本的錯誤信息。


grep支持正則表達式,下面總結下正則表達式和通配符。


正則表達式

正則表達式用來在文件中匹配符合條件的字符串,正則表達式是包含匹配。grepawksed等命令可以支持正則表達式。

通配符

通配符用來匹配符合條件的文件名,通配符是完全匹配,lsfindcp這些命令不支持正則表達式,所以只能使用shell自己的通配符來進行匹配。

?

正則有些符號和通配符有些符號通用,但含義完全不同

?

基礎正則表達式

元字符

作用

*

前一個字符匹配0次或任意多次

.

匹配除了換行符外任意一個字符

^

匹配行首。如^hello會匹配以hello開頭的行

$

匹配行尾,如hello會匹配以hello結束的行

[]

匹配中括號中任意的一個字符,只匹配一個字符。

[^]

匹配除中括號的字符以外的任意一個字符。如[^0-9]匹配任意一個非數字字符

\

轉義符。用于取消特殊符號的含義

{n}

n是一個非負數,匹配前面的字符恰好出現n次。如o{2}匹配food中的兩個o

{n,}

表示其前面的字符出現不少于n

{n,m}

最少匹配n次且最多匹配m

?

1 2 需要注意的是,通配符的*表示任意字符,而正則表達式的*是匹配錢一個字符0次或者任意多次 grep?"s*"?anaconda-ks.cfg??顯示的不是包含有s的行,而是顯示了整個文件,“s*”匹配s的0次或多次



1 grep?"size*"?anaconda-ks.cfg匹配了e的0次或多次,但至少需匹配siz字符串



1 “.”匹配除了換行符外任意一個字符,和通配符的?相同,“.*”就才和通配符中的“*”作用相同



grep提取行,cutawk提取列

?

0x02、cut

cut是一個選取命令,就是將一段數據經過分析,取出我們想要的。一般來說,選取信息通常是針對“行”來進行分析的,并不是整篇信息分析的

cut[選項]?文件名

-f列號提取第幾列

-d分隔符按照指定分隔符分割列(默認使用的是制表符tab鍵)


1 和grep結合使用,cat?/etc/passwd?|?grep?/bin/bash?|?grep?-v?root?|?cut?-d":"?-f?1



cut命令的局限線

cut命令對于空格符分割,不能很好的提取,可以使用awk命令解決



0x03、awk

和cut命令作用一樣,截取符合條件的列,grep是截取符合條件的行,但cut有些局限,awl也可以通過制表符,冒號等分隔符截取,功能遠比cut強大,但awk是一個非常復雜的命令,不但可以實現字符串的截取,還可以在awk命令中進行編程調用,最常見的可以進行函數,判斷等。所以把awk一直說是awk編程。但僅僅是簡單的截取列,又不是用空格作分割的話,cut命令更簡單。

?

awk是一個強大的文本分析工具,相對于grep的查找,sed的編輯,awk在其對數據分析并生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各種分析處理。

?

?

awk?‘條件1{動作1}條件2{動作2...’文件名

條件

一般使用關系表達式作為條件

x>10判斷變量x是否大于10

x>=10大于等于

x<=10小于等于

?

動作

格式化輸出

流程控制語句


$1代表第一列,$2代表第二列,$0代表整一行

?

?

?

FS內置變量

1 2 awk?'{FS=":"}{print?$1"\t"?$3}'?/etc/passwd,使用FS=””,指定分割符,第一行已經讀完,用冒號分割已經來不及了,默認的用空格分割,后面的用冒號分割,在 FS之前強制加個BEGIN


?

關系運算符

?

1 cat?/etc/passwd?|?awk?'{FS=":"}?$3>=500?{printf?$1"\n"}'




0x04、printf

printf是在awk中的標準輸出格式


?printf ‘輸出類型輸出格式’輸出內容


輸出類型:

%ns:輸出字符串,n是數字指代輸出幾個字符

%ni:輸出是整數,n是數字指代輸出幾個數字

%m.nf:輸出浮點數。mn是數字,指代輸出的整數位數和小數位數。加%8.2f代表共輸出8位數,其中2位是小數,6位是整數。

?

輸出格式:

\a:輸出警告聲音

\b:輸出退格符,也就是backspace

\f:清楚屏幕

\n:換行

\r:回車,也就是Enter

\t:水平輸出退格鍵,也就是Tab

\v:垂直輸出退格鍵,也就是Tab



awk命令的輸出中支持printprintf命令

printprint會在每個輸出之后自動加入一個換行符(linux默認沒有print命令)

?

printfprintf是標準格式輸出命令,并不會自動加入換行符,如果需要換行,需要手工加入換行符。


0x05、sed

sed是一種幾乎包括在所有unix平臺(包括linux)的輕量級流編輯器。sed主要是用來將數據進行選取、替換、刪除、新增的命令。

?

vim也可以進行選取,刪除,替換等,但是vim只能對文件進行修改,但是不可以直接對命令的結果進行修改,需先把命令保存到文件中,再對文件進行修改。而sed可以從管道符接收數據進行修改



sed [選項]?[動作]’文件名

常見選項

-n一般sed命令會把所有數據都輸出到屏幕,加入此參數,則只會把經過sed命令處理的行輸出到屏幕

-e允許對輸入數據應用多條sed命令編輯

-ised的修改結果直接修改讀取數據的文件,而不是由屏幕輸出

?

動作:

a\:追加,在當前行后添加一行或多行。添加多行時,除最后一行外,每行末尾需要用\”代表數據未完結。

c\:行要用\”代表數據為完結。

替換,用c后面的字符串替換原來數據行,替換多行時,除最后一行外,每行末尾需i\:插入,在當前行前插入一行或多行,插入多行時,除最后一行外,每行末尾需要用\”代表數據為完結。

d:刪除,刪除指定的行。

p:輸出、打印指定的行。

s:字串替換,用一個字符串替換另外一個字符串。格式為“行范圍s/舊字串/新字串/g(和vim中的替換格式類似)。

?

?

1 2 sed?-n?"1p"?/etc/passwd?,查看etc/passwd中的第一行,如果不加-n參數,顯示這條操作外,還會顯示文件的全部內容,加-n 只會顯示處理的行



1 sed?"2,36d"?/etc/passwd?,刪除第二行到第四行的數據,但不修改文件本身,只有加了-i參數才會修改文件本身



動作ai都是添加,a是追加在行尾,i是插入在行前,但不都會修改文件本身,只會先顯示上做修改,不加-n?除了虎顯示修改的數據,還會顯示文本的所有數據。

動作c和動作s都是進行替換,c進行的是行的替換,s進行的是字符串的替換,字符替換的格式是sed?s/舊字符串/新字符串/g文件名,在s前指定行只需改指定的行,不指定會修改所有的。



0x06、sort 排序命令


sort?【選項】 文件名

選項

?-f忽略大小寫

?-n以數值型進行排序,默認使用字符串排序

-r反向排序

-t指定分隔符,默認使用的是制表符tab

-k n[,m]按照指定的字段范圍排序,從第n字段開始,m字段結束,不加m默認到行尾


1 sort?-t?":"?-k?3,3?/etc/passwd,仔細看,沒把uid當作字符串對待,而當數值型對待,需要加-n參數


本文轉自 wt7315 51CTO博客,原文鏈接:http://blog.51cto.com/wt7315/1860063

總結

以上是生活随笔為你收集整理的shell字符串截取总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 秘密基地在线观看完整版免费 | 日本午夜大片 | 天天干妹子 | 中文字幕在线观看一区二区三区 | 成人三级在线视频 | 男人操女人免费 | 特级西西人体wwwww | 精品人妻伦一二三区久久 | 五月99久久婷婷国产综合亚洲 | 欧美一本| 丝袜+亚洲+另类+欧美+变态 | 婷婷丁香花五月天 | 国产精品福利导航 | 精品视频一二 | 免费福利视频在线观看 | 欧美区一区| 亚洲av无码精品一区二区 | 国产精品视频在线看 | 在线一区二区三区四区五区 | 人妻互换免费中文字幕 | 91欧美在线视频 | 五月丁香 | 中国少妇高潮 | youjizz日本人 | 亚洲视频综合 | 无毒黄色网址 | 女同调教视频 | 国产色综合网 | 女生扒开腿让男生操 | 日韩av免费在线播放 | 91丝袜呻吟高潮美腿白嫩 | 中文字幕人妻伦伦 | 亚洲欧美影院 | 美女被到爽高潮视频 | 久久免费毛片 | 不卡中文 | 香蕉人妻av久久久久天天 | 四虎国产精品永久在线国在线 | 欧美一区二区三区系列电影 | 日韩av在线不卡 | 国产三级国产精品国产国在线观看 | 天堂在线观看 | 91精品国产综合久久香蕉922 | 777精品久无码人妻蜜桃 | 亚洲三级影院 | 色666 | 亚洲天堂免费看 | 亚洲色成人网站www永久四虎 | 黄网地址 | 国产精品情侣自拍 | 国产又黄又猛又粗 | 日日干日日爽 | 蜜桃一区二区三区 | 亚洲人一区二区三区 | 特级a毛片 | 成人在线你懂的 | 亚洲色图国产视频 | 日本a级片视频 | 免费成人91 | 国产自产21区 | 久久精品一二三 | 日韩av无码久久 | 韩国av在线 | 激情伦成人综合小说 | 天天操天天操天天操天天 | 欧美久操 | 日韩免费视频一区二区 | 久久久久久久久久久久久久久久久 | 国产欧美一区二区三区鸳鸯浴 | 欧美理论在线 | 日韩av三级在线 | 日日麻批| 91成人在线观看喷潮 | 青青伊人av | 激情毛片视频 | 欧美一级爽aaaaa大片 | 日韩精品免费电影 | 欧美另类videos| 天天色官网 | 91免费高清在线观看 | 视频免费1区二区三区 | 无码人妻精品一区二区三区99不卡 | 国产黄频 | 亚洲综合色网站 | 黄色免费网站在线看 | 手机在线观看av | 国产欧美一区二区精品性色 | 麻豆午夜| 欧美一区二区在线 | 午夜在线不卡 | 人妻久久久一区二区三区 | 性欧美大战久久久久久久免费观看 | 91草视频 | 日日干干 | 欧美区一区 | 成年人在线观看视频网站 | 香蕉久久久久 | 污污小说在线观看 | 精品国产亚洲一区二区麻豆 |