重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

linux截取第二行命令 linux取第二行数据

情景linux--如何得出一个文件的第二列?

曾经有一同事问我,在linux下如何输出一个文本文件的第二列,文本内容不限。我不假思索地说用 awk 啊。她追问只有这一种方式么?于是我仔细想了想,……

成都创新互联公司专注于中大型企业的成都做网站、网站建设和网站改版、网站营销服务,追求商业策划与数据分析、创意艺术与技术开发的融合,累计客户千余家,服务满意度达97%。帮助广大客户顺利对接上互联网浪潮,准确优选出符合自己需要的互联网运用,我们将一直专注成都品牌网站建设和互联网程序开发,在前进的路上,与客户一起成长!

既然内容不限,则可以自定义文件内容的格式,这样可以用的命令自然会多一些。

需求为输出文件第二列,则基本上有两种方式实现:

因而,任何能直接输出特定列的命令,以及能够截取或删除其它列的命令都满足此需求。

为了方便说明,列举几个示例文件:

awk自然是最容易想到的,它处理格式化的文本得心应手。

使用 -F 指定列(字段)分隔符。

如果文件只有两列,还可以使用 $NF ,如 awk '{print $NF}' test1.txt 。

awk还支持一些函数,同样可以将第二列提取出来,此处不再赘述。

cut命令的默认字段分隔符是 TAB ,可以使用 -d 重新指定。 -f 列出指定字段。

如果第二列的字符的起始和结束序号为固定值,如test2.txt,可以使用 -c 参数,截取特定的字符序列。

sed采用的是第二种实现方式,即将其它列删除掉,利用 后向引用 :

在test1.txt中,第二列的前面和后面分别为数字空格和空格数字,所以可以利用 正则表达式 将其输出出来。

同理:

colrm命令可以删除标准输入中的指定列,但 该命令中所定义的列指的是单个字符 ,这与常规对字段的定义不同,需注意。

格式如下:

如果只指定start,则大于等于start的列均被删除;如果指定了start和stop,则大于等于start,小于等于stop的列被删除。

因此,此命令可处理第二个字段起始位置为固定值的test2.txt文件。

read读取文件中的每行,将特定的列输出来。

shell支持命令替换,通过两次命令替换,得到第二列:

虽然不清楚她从哪里看到的这道题目,题目本身是何用意。但以一个问题,调动起了对linux多个命令及知识点的学习和总结,还是有价值的。

欢迎提出不同解法!

相关命令

linux 中可以用cut提取某一行的某一列数据吗? 如果可以怎么做?

可以。

cut -d" " -f2 filename

意思就是我以空格为列的分隔符,提取第二列

或者使用awk

awk '{print $2}' filename

awk默认以空格为分隔符,打印第二列

linux文件截取前几行,后几行,中间几行命令及查看端口命令

1. 如果你只想看文件的前100行,可以使用head命令,如

head -100  filename

2. 如果你想查看文件的后100行,可以使用tail命令,如:

tail -100  filename 或 tail -n 100  filename

3. 查看文件中间一段,你可以使用sed命令,如:

sed -n '100,200p' filename 

这样你就可以只查看文件的第100行到第200行。

截取的文件可以用重定向输入到新的文件中:

head -100  filename a.txt

也可以在robot里面使用read 打印出来

使用命令:

ps -aux | grep tomcat/8080

方法二:直接使用 netstat   -anp   |   grep  portno

即:netstat –anp | grep 8080

查看端口命令

linux替换目录下所有文件中的某字符串

比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做:

sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules`

解释一下:

-i 表示inplace edit,就地修改文件

-r 表示搜索子目录

-l 表示输出匹配的文件名

linux查找目录下的所有文件中是否含有某个字符串

查找目录下的所有文件中是否含有某个字符串

find .|xargs grep -ri "php"

查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名

find .|xargs grep -ri "php" -l

ip addr  查看ip地址

linux sed awk命令结合匹配符 根据第二行内容,替换第一行内容 可以写成shell脚本

我也给个思路吧 —— 用sed根据地址范围截取文件内容,用Here documents方法添加新的多行内容,然后重组文件。具体步骤如下:

1)截取test.xml文件起始行到abcdef行,保存到tmp文件;

2)将要添加的内容根据变量值展开,附加写入tmp文件;

3)截取test.xml文件/abcdef行到结束行,附加写入tmp文件。

4)移动tmp文件覆盖test.xml文件。

代码:

12345678910111213#!/bin/sh$hostnames="host1,host2,host3 ..."$paragraph="many_strings"sed -n '1,/^abcdef/p' test.xml tmpcat EOF tmpfor hname in `echo "$hostnames" | tr ',' ' '`do insert $hname insert $paragraphdoneEOFsed -n '/^\/abcdef/,$p' test.xml tmpmv tmp test.xml

注意:

1) for a in b 结构中,b集合里的内容必需要空格分隔。所以我这里做了转换,用tr命令将逗号分隔改为了空格分隔。

2)第二个EOF必需顶格写,前面不能有空格。

linux取出某几行

一、从第3000行开始,显示1000行。即显示3000~3999行

cat filename | tail -n +3000 | head -n 1000

二、显示1000行到3000行

cat filename| head -n 3000 | tail -n +1000

注意两种方法的顺序

分解:

tail -n 1000:显示最后1000行

tail -n +1000:从1000行开始显示,显示1000行以后的

head -n 1000:显示前面1000行

三、用sed命令

sed -n '5,10p' filename 这样就可以只查看文件的第5行到第10行。

如何用linux脚本获取到第二行输出

命令:相关显示命令有sed,tail,cat.awk,head等,可以常看Linux命令大全,man命令或者help命令查看相关用法。我们只介绍其中的一部分。

一、sed命令

#sed --help;查看具体使用规则:

#sed -n 'xp' filename;显示文件X行命令:

#sed -n 'x,yp' filename;显示文件X行到Y行的内容:


名称栏目:linux截取第二行命令 linux取第二行数据
标题URL:http://cqcxhl.com/article/hgsgcg.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP