国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 操作系統(tǒng) > 正文

cut

2024-06-28 13:28:13
字體:
供稿:網(wǎng)友
cut - 小巧的文本截取工具簡介

cut命令是Unix下的一個命令行程序。cut命令是以為單位來處理的。cut命令處理的是標(biāo)準(zhǔn)輸入,所以可以結(jié)合管道來進行文本的處理。

命令格式

cut option… [file]…

cut命令的option部分可以是如下的一些選項:

-b, --bytes=LIST 選擇指定數(shù)目LIST的字節(jié)

-c, --characters=LIST 選擇指定數(shù)目LIST的字符

-d, --delimiter=DELIM 使用DELIM作為內(nèi)容的分隔符,而不是使用默認(rèn)的制表符(tab)作為分隔符

-f, --fields=LIST 選擇LIST指定的LIST部分內(nèi)容,輸出選中的內(nèi)容,并且如果字符沒有包含分隔符,則也同樣輸出,除非指定了-s選項

-n 和-b一起使用,表示在選擇字節(jié)的時候,對于多字節(jié)的字符不進行分隔,多字節(jié)的字符被看作一個字節(jié)

-s, --only-delimited 不輸出不包含分隔符的行

--output-delimiter=STRING 使用STRING作為輸出內(nèi)容中的分隔符,而不是使用原來標(biāo)準(zhǔn)輸入中的分隔符。

Note:對于選項-b, -c, -f,只能在一個命令被指定其中的一項。

命令結(jié)果的輸出的順序和待處理數(shù)據(jù)在輸入時的順序是一樣的。

對于一個LIST,可以是一個范圍,也可以是多個由逗號分隔的多個范圍。

LIST的格式:

N 表示指定N個數(shù)據(jù)單元,計數(shù)從1開始

N- 從第N個數(shù)據(jù)單元開始到行結(jié)束

N-M 從第N個數(shù)據(jù)單元到第M個數(shù)據(jù)單元(包括)

-M 從行的開始到底M個數(shù)據(jù)單元(包括)

其中的數(shù)據(jù)單元可以是:字節(jié),字符,數(shù)據(jù)塊

Note:如果命令中沒有指定FILE或者FILE是"-",則默認(rèn)是讀取標(biāo)準(zhǔn)輸入。

用法

在linux下環(huán)境變量PATH中包含了由”:”分隔的變量的查找路徑,假設(shè)我們需要截取其中的其中的第二個路徑,則可以使用如下的方法:

echo $PATH | cut -d ':' -f 2

如果需要截取PATH變量中從第二個路徑開始到結(jié)束的所有內(nèi)容,可以使用如下的方法:

echo $PATH | cut -d ':' -f 2-

如果需要截取內(nèi)容從開始到第3部分的內(nèi)容,則可以使用如下的命令:

echo $PATH | cut -d ‘:’ -f –3

如果是截取從第2部分到第3部分的內(nèi)容,則可以使用如下的命令:

echo $PATH | cut -d ':' 2-3

如果碰到一樣是不包含任何分隔符的,那么實際上這一樣我們可能不需要任何處理,cut默認(rèn)是會原樣輸出的,如果你不需要它們輸出,

則可以使用選項’-s’來阻止那些不包含指定分隔符的行:

echo $PATH | cut -s -d ':' -f 3

上述的-d選項可以用于有明顯的分隔符存在的情況下使用,在格式明顯的文本行處理中可以方便的對行進行截取。除了利用分隔符來截取分隔文本,對于沒有分隔格式的字符文本還可以進行指定字符個數(shù)的截取,那就是-c選項了:

取出一行文本中的第3個字節(jié):

echo 'hello' | cut -c 3

同樣的,如果需要輸出指定范圍內(nèi)的字符,則可以使用n-m的方式指定范圍

echo 'hello' | cut -c -2    #輸出行開始到第2個字符的內(nèi)容echo 'hello' | cut -c 2-3   #輸出第2到3個字符echo 'hello' | cut -c 2-    #輸出從第二字符開始到行結(jié)束的內(nèi)容

在輸出的時候,如果需要指定一種另外的分隔符來分隔輸出的內(nèi)容,以替代原來的分隔符,則可以使用--output-delimiter來處理

echo $PATH | cut -d ':' -f 1- --output-delimiter='*'

則輸出的PATH變量就是以*作為分隔符,而不是使用:來作為分隔符,是不是很方便?

當(dāng)cut遇上Vim

想象一下,如果cut命令和Vim配合使用,是不是可以完成很多霸氣的操作呢,嘻嘻!且看:

假設(shè)我在Vim中正在編輯這樣的文本:

image

我想把分隔數(shù)字的*改成冒號:,怎么辦呢?一個一個改?,你或許會想到在Vim下的模式替換來處理,這確實是一個好方法。如果Vim結(jié)合cut命令來處理,也可以達(dá)到異曲同工的效果:

使用Vim下的模式替換命令:

Shift+V      #選中當(dāng)前的行:s//*/:/g    #使用s命令進行替換,由于*在Vim中是由特殊含義的,需要使用反斜杠來轉(zhuǎn)義

使用cut命令來處理:

Shift+V      #選中光標(biāo)所在的行:!cut -d '*' -f 1- --output-delimiter=':'

兩個命令的執(zhí)行結(jié)果都一樣,變成這樣了:

image

所以,cut命令配合Vim,也可以是一種有效的文本編輯的方法。這不也是Unix下的KISS模式的一種體現(xiàn)嗎?


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 阜康市| 镇远县| 广丰县| 方山县| 巴彦县| 钦州市| 鸡西市| 莫力| 泰州市| 彝良县| 曲靖市| 芒康县| 香格里拉县| 上饶县| 武安市| 延安市| 荆门市| 左权县| 揭西县| 锦州市| 盘锦市| 九江县| 油尖旺区| 梨树县| 洞头县| 松江区| 合江县| 凤凰县| 潞西市| 江门市| 磐安县| 梁河县| 武邑县| 榕江县| 双鸭山市| 维西| 松桃| 南宫市| 丹巴县| 福贡县| 宁波市|