linux 提取指定的列

您所在的位置:网站首页 linux从文件中查找字符串数据 linux 提取指定的列

linux 提取指定的列

2023-09-06 19:11| 来源: 网络整理| 查看: 265

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3