【发布时间】:2021-09-09 05:42:17
【问题描述】:
ls subset/*.txt | cut -d "/" -f 2 | cut -d "." -f 1 | xargs -i awk '$2 == {} {print $3,$4 > $2}' data.txt
有人可以帮助我为什么这行不通吗?
我在子目录中有一个文件列表,我想使用这些文件名。
ls subset/*.txt | cut -d "/" -f 2 | cut -d "." -f 1
这部分说明我已经成功分离了文件名。
然后我想在 data.txt 中查找 $2 与文件名匹配的行,并将字段 $3 和 $4 保存在文件名 $2 下。
我一直在尝试不同的版本,但没有一个能达到我想要的效果。我想我对 xargs -i 选项有些不了解,但我就是想不通。有人可以帮忙吗?
可以说,我的文件将在子目录中,
file1.txt
file2.txt
file3.txt
我的 data.txt 包含数千个文件的数据,其中只有子集在子集目录中。 data.txt 中的每一行都是一个记录文件:例如这样。
xxxx 文件2 34 45 xxxx xxxx xxxx xxxx
xxxx 文件1 54 30 xxxx xxx xxxx xxx
vvvd file2 23 30 xfxx flkd sdlfkj dfs
我只想分别保存字段 3 和 4,以便输出如下所示。
file2.txt 的内容:
34 45
23 30
file1.txt 的内容:
54 30
【问题讨论】:
-
ls subset/*.txt是一个糟糕的起点(请参阅mywiki.wooledge.org/ParsingLs)。请edit 您的问题提供minimal reproducible example 简洁、可测试的示例输入和预期输出,以便我们可以帮助您以正确的方式做您想做的事情。 -
感谢您提供更多信息,但请参阅 stackoverflow.com/help/formatting 了解如何正确格式化输入、输出和代码块,或者仅查看现有问题中的处理方式。