【发布时间】:2021-04-28 02:47:02
【问题描述】:
我想将 txt 文件的每一行写入一个单独的文件,并使用第一列作为新文件的名称。然后,新文件应该包含该行中的所有其他内容,但第 1 列除外。
所以当我有:
example_1 a b c d
example_2 e f g h
example_3 j k l m
我想要 3 个名为 example_1.mop、example_2.mop 和 example_3.mop 的单独文件,并包含第一列之后的所有内容。所以 example_1.mop 应该包含 a b c d 等等。
我几乎找到了办法
awk '{printf "%s\n", $2>$1".mop"}' file
但这只会将第二列放入新文件中。我如何告诉 awk 使用除第一列之外的所有内容?
非常感谢您的帮助!
【问题讨论】:
-
主要是为了不让
perl太生锈:perl -anE '$,=" "; open my $f, ">", $F[0]; shift @F, say $f @F' input -
@William Pursell,对不起,我不知道 perl。你能给这个解释一下吗?非常感谢!
-
在 perl 中,
-a导致每一行被分割成数组@F。第一列在$F[0],所以我们打开那个文件。shift然后丢弃第一个元素并将 @F 的其余部分向下移动一个。say打印修改后的数组。$,=" "只是在输出中的每个条目之间添加一个空格。
标签: awk