# 提取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