linux 提取指定的列

# 提取name.txt 文件中的最后一列中以:分割的第二列 awk(符截取命令)

awk -F '\t' '{print $NF}' name.txt|awk -F ':' '{print $2}'>res.txt

其中-F 表示分割符,$NF表示最后一列,$(NF-1)表示倒数第二列 $2表示第二列 ,$0表示全部,$1表示第一列

#把上一步的数据和name.txt文件合并生成一个新的文件

paste res.txt name.txt > out.txt

#读取result.txt文件中的内容,然后删除这些名字的文件夹

#bin/bash
cat result.txt | while read line
do
rm -rf $line
done

#提取某一列也可以用cut(字符提取命令)

-f  列号      提取第几列

-d  “分隔符”  截取到分隔符为止

cut  -d '\t' -f 1

####:cut默认是以TAB来分隔多个列的,而awk默认的列分隔符为一个或多个空格或TAB,相对cut比较方便但有局限性

example

cut提取整列,grep提取整行,一般同时使用,例如提取所有普通用户的用户名,所有用户都位于/bin/bash下,-v排除root,截取到:为止

cat /etc/passwd | grep /bin/bash | grep -v root | cut -d ":" -f 1

处理文本:

a b c
q w (e)
z x (c c)
d f ((g) (g))

最终结果:

c
(e)
(c c)
((g) (g))

办法1:\S表示非空白字符  \s表示空白字符  +表示至少一个{2}表示2个
以第一行数据为例   (\S+\s+){2}就是指下列高亮的字符串
q w (e)
其实就是删除前两列

sed -r 's/(\S+\s+){2}//' file

2:cut -c 5- file1

cut命令主要是接受三个定位方法:

第一,字节(bytes),用选项-b

第二,字符(characters),用选项-c (一个汉字三个字符)当遇到多字节字符时,可以使用-n选项,-n用于告诉cut不要将多字节字符拆开

第三,域(fields),用选项-f

猜你喜欢

转载自blog.csdn.net/Cassiel60/article/details/88706365