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
#!/bin/bashTotalFields=$(awk '{print NF}' file.txt|sort -nr|head -1) #获取file.txt的最大字段数量,假定文件名为 file.txt
k=1
for((i=1i<=$TotalFieldsi+=1))
do
cut -d" " -f${i}-$(((i+=3))) file.txt>file${k} #-d后为各字段的分隔符,自己根据实际情况指定
((k++))
done
举个例子:
[root@localhost ~]# cat file.txtaa bb cc dd ee ff gg cc dd o k g ookk
ca bb cc ddd dee fff dgg fcc ddd o k g ookk
aa abb dcc add ee ff gg cc dd do k g ookk
aaa bb cc ddd ebe fff dgg ccf dd o dk g ookk
aa bb cyc dd ee ff gg ccd ddd o fk g ookk
[root@localhost ~]# cat test.sh
#!/bin/bash
TotalFields=$(awk '{print NF}' file.txt|sort -nr|head -1)
k=1
for((i=1i<=$TotalFieldsi+=1))
do
cut -d" " -f${i}-$(((i+=3))) file.txt>file${k}
((k++))
done
[root@localhost ~]# ./test.sh
[root@localhost ~]# ls
anaconda-ks.cfg cstudy Desktop file1 file2 file3 file4 file.txt install.log install.log.syslog jdk-6u45-linux-x64.bin test.sh VBoxLinuxAdditions.run Work
[root@localhost ~]# cat file1
aa bb cc dd
ca bb cc ddd
aa abb dcc add
aaa bb cc ddd
aa bb cyc dd
[root@localhost ~]# cat file2
ee ff gg cc
dee fff dgg fcc
ee ff gg cc
ebe fff dgg ccf
ee ff gg ccd
[root@localhost ~]# cat file3
dd o k g
ddd o k g
dd do k g
dd o dk g
ddd o fk g
[root@localhost ~]# cat file4
ookk
ookk
ookk
ookk
ookk
方法有多种:方法1:用cut
#抽取第3,4列
cut
-d","
-f3,4
my.txt
>
my_new.txt
#打印出来
cat
my_new.txt
方法2.用awk
假设你的文件my.txt分割符号是(,)
,有1,2,3,4,5,6,7,8
列,你要把3,4列打印出来:
awk
'BEGIN{FS=","OFS=","}{print
$3,$4
}'
my.txt
>
my_new.txt
#就抽取了第3,4列了,保存到了my_new.txt
还有其他更好的方法欢迎大家分享^^
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)