linux - 如何遍历多个文件以提取特定列并另存为单独的文件?

标签 linux string bash unix

我有很多 *.txt 文件。我想从这些文件中的每一个中提取第 3 列和第 5 列,并将它们另存为新文件,并保留其原始名称和 new_ 扩展名。我在下面有这个 bash 循环来尝试执行此操作,但没有执行我想要的操作。有人可以帮我解决这个问题吗?

for i in *.txt; do
cut -f 3,5 $i  > /media/owner/new_$i_assembly.txt 
done

最佳答案

简单的方法:

for f in *.txt; do
    cut -d$'\t' -f3,5 "$f" > "/media/owner/new_${f}_assembly.txt" 
done

如果可能存在除制表符以外的空格 - 您可以使用以下 awk 方法:

for f in *.txt; do
    awk '{ print $3,$5 }' OFS='\t' "$f" > "/media/owner/new_${f}_assembly.txt" 
done

关于linux - 如何遍历多个文件以提取特定列并另存为单独的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47603088/

相关文章:

c - SIP用户代理与SIP服务器连接的信息(Opensip)

c++ - 如何解决 boost 错误: terminate called after throwing an instance of 'boost::interprocess::interprocess_exception'

java - 方法不更新原始字符串变量

Java:需要查看输入字符串中的每个字符是否与 "alphabet"中的任何字符匹配

regex - Sed 在第二次出现时替换

linux - 如何确定哪些网络服务器软件正在为网页提供服务,替代 nc?

c++ - 在 strlen 函数中的 solaris vsnprintf 核心转储中有什么方法可以解决这个问题?

javascript - 如何使用 jQuery 或 javascript 修改 URL 结尾?

bash - cd 到由管道命令确定的目录

ruby - 使用 ansible playbook 更改 rvm ruby​​ 版本