繁体   English   中英

用Bash或awk提取列

[英]extract columns with Bash or awk

我有一个包含1000个文本文件的文件夹。 我想从每个文件中提取第四列和第五列,并将其保存到具有相同文件名的另一个文件夹中。 如何使用awkBash做到这一点?

由于您尚未指定字段分隔符,因此我假设它是default(space)字段分隔符。

awk '{print $4,$5>"/tmp/another_directory/"FILENAME}' *

使用GNU find和GNU sed,假设以空格分隔的列和要处理的文件位于当前目录中:

mkdir tmp/
find . -maxdepth 1 -type f -print0 |
  xargs -0 -l /bin/sh -c 'sed -r "s/([^ ] *){3}([^ ]) *([^ ]*).*/\2 \3/" "$1" > "tmp/$1"' ''

请注意,最后一对单引号很重要,它们是一个占位符,因此文件名会正确传递给sh 处理后的文件将保存到当前目录的tmp/中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM