Linux/Unix中的cut命令用來從每一行文本中選擇一部分,通過指定分隔符,可以選出指定的某些行或者列,也可以選出某個範圍的字符。
下面的所有例子都是基於file.txt文件,文件內容可通過cat命令查看:
> cat file.txt
unix or linux os
is unix good os
is linux good os
1. 輸出指定位置的字符內容
通過-c選項可以指定要選擇輸出的文本字節位置
cut -c4 file.txt
x
u
l
上例將所有行的第四個字符打印出來。
通過以逗號來分割多個整數,也可以打印多個位置的文本
cut -c4,6 file.txt
xo
ui
ln
上述命令將每一行的第四個和第六個字符打印出來。
2. 打印連續範圍的字符內容
通過-c選項,短橫線連接兩個整數,就可以將某個連續範圍的字符打印出來。
cut -c4-7 file.txt
x or
unix
linu
上述命令將第四個到第七個字符打印出來,注意是閉區間。
如果不指定起始位置,則從頭開始輸出,如下例:
cut -c-6 file.txt
unix o
is uni
is lin
將每一行的前六個字符都打印出來。
類似的,如果不指定結束位置,則將從起始位置到行末的所有文本都打印出來,如下例:
cut -c10- file.txt
inux os
ood os
good os
如果起始位置和結束位置都沒有指定,則整行都會被打印出來。
cut -c- file.txt
3. 通過分隔符來輸出指定字段
就像awk命令一樣,可以通過-d選項指定每一行文本的分隔符,然後再用-f選項指定要抽取哪些字段作爲最終的輸出結果。
cut -d' ' -f2 file.txt
or
unix
linux
上述命令定義空格爲一行的分隔符,並將每一行的第二個字段打印出來。
類似於上面的情形,在-f選項中可以指定若干個離散的數字,會將這些字段打印出來:
cut -d' ' -f2,3 file.txt
or linux
unix good
linux good
上例將第二個字段和第三個字段打印出來。
注:如果指定的分隔符不存在,會將整行內容打印出來。
4. 通過分隔符輸出連續範圍的字段內容
在-f選項中可以指定一個起始範圍和結束範圍
cut -d' ' -f1-3 file.txt
上述命令將第一個字段、第二個字段、第三個字段的內容都打印出來。
不指定起始位置,則默認從頭開始
cut -d' ' -f-3 file.txt
上述命令將前三個字段都打印出來
不指定結束位置,則默認到每一行的末尾
cut -d' ' -f2- file.txt
上述命令將第二字端到末尾的所有內容打印出來
5. 用cut命令來打印/etc/passwd文件的內容
文件/etc/passwd的內容是通過‘:’分隔的,因此可用如下命令:
cut -d':' -f1 /etc/passwd
6. 輸入文件的內容如下
> cat filenames.txt
logfile.dat
sum.pl
add_int.sh
rev filenames.txt | cut -d'.' -f1