我有一个非常大的文本文件,其中包含多列数据。
即 1312.4123 asdkofADkofaO213 dakofasdjodas 2013 年 3 月星期五 15:23:11 .. .. .. 等等。
我希望根据列(以空格分隔)将此文本文件拆分为多个子集。Column1.txt 将包含 1312.4123,Column2.txt 将包含 dkofADkofa0213 等,用于所有后续行。如果我必须总结一下我想要的,那就是在 excel 中将文本转换为列,但是文件大小阻止我使用这样的程序。
我正在使用提供命令行选项的 Linux。
答案1
这应该能给你你想要的东西:
列=`head -1 数据文件.txt | wc -w` 对于 i 在 `seq 1 $columns` 做 awk'{打印$'$i'}'<数据文件.txt>列$i.txt 完毕
假设文件中的所有行都有与第一行相同的列数。
答案2
AWK 是一个基于解释器的编程语言.它们倾向于支持读取和写入文件。
这里的魔力在于:
- NF:每个文件的字段数(空格是默认分隔符)
- 我:用户变量
- $i:内置字段变量 $1 ... $NF($0 为整行)
- “列”我:字符串的默认运算符是连接(不需要“a”+“b”或“a”。“b”)
- > 文件:输出重定向
例如:
$ ll 总计 140 drwxr-xr-x 2 jaroslav jaroslav 4096 3月16日 07:11 回答 drwxr-xr-x 3 jaroslav jaroslav 4096 十二月 7 12:38 差异 -rw-r--r-- 1 jaroslav jaroslav 214 十二月 7 12:38 diff.tar.gz -rw-r--r-- 1 jaroslav jaroslav 700 4月 5日 02:37 fonts.sh -rw-r--r-- 1 jaroslav jaroslav 4 四月 5 15:52 嗨 -rw-r--r-- 1 jaroslav jaroslav 0 3月 19 05:06 moo -rw-r--r-- 1 jaroslav jaroslav 10240 十二月 7 12:08 moo.tar -rw-r--r-- 1 jaroslav jaroslav 23147 3月 16 08:29 ob.rc.xml drwxr-xr-x 3 jaroslav jaroslav 4096 3月 16 03:08 重命名 drwxr-sr-x 2 jaroslav 游戏 4096 3月 19 05:07 setgid drwxr-xr-x 2 jaroslav jaroslav 69632 3月 11 00:42 次 -rw-r--r-- 1 jaroslav jaroslav 92 三月 11 00:14 drwxr-xr-x 4 jaroslav jaroslav 4096 3月 22 00:15 wkhtmltoimage
$ ls -l | awk '{
for (i=1; i<=NF; i++) {
file="column" i;
print $i > file
}
}'
$ cat column9|列 答案 fonts.sh moo.tar setgid wkhtmltoimage 与 ob.rc.xml 时间不同 diff.tar.gz moo 重命名而 $ cat column1|列 总计 -rw-r--r-- -rw-r--r-- drwxr-xr-x -rw-r--r-- drwxr-xr-x -rw-r--r-- -rw-r--r-- drwxr-sr-x drwxr-xr-x drwxr-xr-x -rw-r--r-- -rw-r--r-- drwxr-xr-x