cut使用举例
简单的cut举例
cut举例cut最简单的使用方法是结合-d和-f
cut -d':' -f1 /etc/passwd则可以截取出用户帐号
如果要截取多个字段,则可以类似使用如下案例
grep "/bin/bash" /etc/passwd | cut -d':' -f1,6获取字符串部分字符
command | cut -c1-8切出命令输出的前8个字符
另外也有一些方法只获得前8个字符:
command | head -c8
command | awk '{print substr($0,1,8);exit}'
command | sed 's/^\(........\).*/\1/;q'如果是bash,还可以:
var=$(command)
echo ${var:0:8}分隔(delimiter)符使用tab的cut方法
tab的cut方法如果字段之间是使用TAB来分隔的,有以下两种方法使用cut
按下
Ctrl-v + Tab
cut -f2 -d' ' infile或者
cut -f2 -d$'\t' infileBUT,其实cut默认的分隔符就是TAB,也就是不需要使用-d也可以啦!
多个(任意数量)空格的分隔使用cut方法
cut方法使用
sed来合并多个空格成一个空格
在使用cut工具来截取ps出来的进程的pid,会遇到一个问题,就是每列之间的空格数量是不一定的,这样虽然可以通过awk来截取,但是蹪于cut命令就不行了。解决的方法是将多个空格合并成一个空格,sed命令提供了这个功能:
ps axu | grep '[j]boss' | sed 's/\s\+/ /g' | cut -d' ' -f2这里使用的是GNU sed,这个sed提供了
\s表示空格(扩展),\+表示多个空格
或者
ps axu | grep '[j]boss' | sed 's/\s\s*/ /g' | cut -d' ' -f2不过,在OS X中,需要传递
-E参数来激活sed扩展正则表达式,然后使用[[:space:]]来代替\s,也就是
ps axu | grep '[j]boss' | sed -E 's/[[:space:]]+/ /g' | cut -d' ' -f2使用
tr -s ' '来合并多个空格成为一个空格(这个方法最简单)
ps axu | grep '[j]boss' | tr -s ' ' | cut -d' ' -f2
tr命令-s表示压缩重复的意思(squeeze repeats),可以将多个重复字符压缩成单个字符,非常有用!
参考
[]
Last updated
Was this helpful?