首页 > 解决方案 > 使用cut命令后如何制作和命名多个文本文件?

问题描述

我有大约 50 个数据文本文件,需要从中删除几列。

我一直在使用该cut命令单独删除和重命名它们,但我将拥有更多文件并且需要一种方法来大规模进行。

目前我一直在使用:

cut -f1,6,7,8 filename.txt >> filename_Fixed.txt

我可以使用以下方法从所有文件中删除列:

 cut -f1,6,7,8 *.txt 

但我只能在终端中获取所有输出,或者我可以将其写入单个文本文件。

我想要的是使用 cut 编辑几个文件以删除所需的列:

filename1.txt
filename2.txt
filename3.txt
filename4.txt
.
.

.

并获取编辑后的输出以写入单个文件:

filename_Fixed1.txt
filename_Fixed2.txt
filename_Fixed3.txt
filename_Fixed4.txt
.
.

.

但是一直无法找到将输出写入新文本文件的方法。我是使用命令行的新手,编码员不多,所以也许我不知道要搜索哪些术语?我什至无法在谷歌搜索中找到任何对我有帮助的东西。看起来应该很简单,但我很挣扎。

无奈之下,我确实尝试了这段代码,但知道它不起作用:

cut -f1,6,7,8 *.txt >> ( FILENAME ".fixed" ) 

我在">>"嵌套在awk输出多个文件的命令中找到了该部分。

我也尝试(再次知道它不起作用)对输出文件进行通配符,但得到了一个模棱两可的重定向错误。

标签: bashshelltextcommand-linefilenames

解决方案


你试过了for吗?

for f in *.txt ; do
    cut -f 1,6,7,8 "$f" > $(basename "$f" .txt)_fixed.txt
done

(注意我现在不能尝试basename,你可以用 替换它"${f}_fixed"


推荐阅读