linux 取文本固定几列
linux输出文件有几列可以使用 cat filename | awk '{print NF}' 命令可以得到每一行对应有多少列。
例如文件a.txt的内容为:
你好 北京 天安门
1 2 3 4
1 2 3 4 5
输入并执行cat a.txt | awk '{print NF}' 得出以下结果:
3
4
5
输出结果分别代表第一行有3列,第二行有4列,第三行有5列。
1、Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。
它除了在服务器操作系统方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改完善这个操作系统,使其最大化地适应用户的需要。
2、AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言的最大功能取决于一个人所拥有的知识。awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源(ls -l /bin/awk )
扩展资料:
linux主要特性:
1、完全兼容POSIX1.0标准
这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。
2、多用户、多任务
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。
3、良好的界面
Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。
4、支持多种平台
Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。
参考资料来源:
百度百科-Awk
百度百科-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行。
个人认为,识别配置文件都是将配置文件的内容当成变量来识别。
[root@dba ~]# cat ip.txt
192.168.1.1 b
192.168.1.1 c
[root@dba ~]# cat a.sh
#!/bin/bash
while read LINE;
do
echo -e "${LINE} `ping -c 1 ${LINE}| grep -1 "transmitted"| sed 'N;N;s/\n/ /g'| awk -F",| " '{print $10,$13,$18,$22}' | awk -F"/" '{print $1,$2,$3,$4}';`"
done<ip.txt
[root@dba ~]# ./a.sh
192.168.1.1 b 1 0% 0ms 0.864 0.864 0.864 0.000
192.168.1.1 c 1 0% 0ms 0.829 0.829 0.829 0.000
是这意思不?
取某列的话,取出来放到一个临时文件里,然后想怎么操作就怎么操作,然后再把临时文件删了,方法可以有很多种,关键是根据各种环境灵活运用啊
[root@dba ~]# cat ip.txt
192.168.1.1 b
192.168.1.1 c
[root@dba ~]# awk -F " " '{print $2}' ip.txt > temp.txt
[root@dba ~]# cat temp.txt
b
c
[root@dba ~]# sed '2s/[a-z]/999/g' temp.txt
b
999
[root@dba ~]# rm -rf temp.txt
是这意思不?觉得可以给好评啊亲!
awk -F, '{print $1 $3}' file
-F 后改分隔字符
可以使用cut命令和awk命令解决。
可以私下讨论一下shell编程的问题哦
百泳人参: 整个Linux都是架构在文件上的,所有的设备等等都是文件. 文本文件是最好读取的,也方便最终用户配置.个人认为,识别配置文件都是将配置文件的内容当成变量来识别.[root@dba ~]# cat ip.txt192.168.1.1 b192.168.1.1 c [root@dba ~]# cat ...
镇江市13449376938: linux下如何获得特定字符串前后几行文本 - ?
百泳人参: 这行命令可以帮助你删除包含 Merge 的 commit 块(任意多个这样的文字块) sed -n '/commit/{:a;h;n;/Merge/b;:c;H;n;$bd;/commit/!bc;:d;x;p;x;ba}' log > log.txt 运行效果如下:我的命令可能复杂了些.稍微解释一下,仅供参考:其中:a :b :c :d 是...
镇江市13449376938: linux输出文件有几列?
百泳人参: 想看列数的话就可以使用: cat 文件名 | awk '{print NF}', awk默认的字段分隔符是空格或制表符(tab),如果你的是其它符号的话,就使用-F参数指定, 例如:cat 文件名 | awk -F":" '{print NF}',就是表示以分号(:)为空格符.
镇江市13449376938: Linux C语言怎么读取文件指定行内容 - ?
百泳人参: #include <stdio.h> int main() { FILE *fp=fopen("file.txt", "r"); int i; char str[1024]; //足够容纳最大长度的一行! if (fp==NULL )return -1; for( i=0;i<9;i++ ) //跳过前9行 { fgets(str,sizeof(str),fp); } fgets(str,sizeof(str),fp); //读第10行 printf("%s", str ); return 0; }
镇江市13449376938: linux脚本怎么读取文本的某一列进行操作?
百泳人参: 用cut 命令比较快 cut OPTION... [FILE]... 应为cut直接可以操作到字节,比如你想操作1.txt 前5个字符的那一列 cut -c 1-5 1.txt 1-5个字节的 cut -b 1-5 1.txt , 还可以操作字段 -f 选项. 如果你想更精细点的你就用 awk命令,具体可以查查awk命令用法,http://wenku.baidu.com/view/503d59858762caaedd33d4bc.html cut命令用法 http://wenku.baidu.com/view/205783d1b14e852458fb578e.html
镇江市13449376938: 在LINUX字符界面下.打什么命令显示文本固定某行到某行的内容? - ?
百泳人参: 比如要查看10-20行内容 sed -n '10,20p' file 就可以了.
镇江市13449376938: Linux shell 读取文本中某几行数据并输出成新文件 - ?
百泳人参: for file in `ls abc*`; do sed -n '1,10p' $file > ${file}_10; done
镇江市13449376938: 何如利用linux shell 脚本实现从不同文件中提取某一列或多列组成新文件?
百泳人参: 一般用awk 提取列
镇江市13449376938: linux或Python提取文件一定范围的行 - ?
百泳人参: while read begin end do awk -v a=$begin -v b=$end '$1>=a && $1done
镇江市13449376938: 如何用Linux命令提取表格文本中的某列 - ?
百泳人参: 这个就需要依靠非常熟练的 LINUX / UNIX SHELL 编程技术、以及 python 语言来提取表格文本中的某列了.具体的如何实现方法,你可以参考相关的 SHELL 编程技术、以及 python 语言编程的书籍,使用程序的方式提取出你需要的任意一列内容.