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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值