如何使用任何bash命令剪切文件并将所有列保存在不同的文件中

时间:2014-04-18 03:03:09

标签: bash shell

美好的一天,

我想知道如何剪切文件并将每个部分保存在不同的文件中。分隔符为]

的位置

示例:

TOfile1 ] TOfile2

提前致谢

3 个答案:

答案 0 :(得分:3)

使用awk

$ awk -F' []] ' '{for(i=1;i<=NF;i++) print $i > "file"i}' input
$ head file*
==> file1 <==
TOfile1

==> file2 <==
TOfile2
  • 将分隔符设置为[]],因为]是一个特殊字符,我们将其放在字符类中以将其视为字面值。
  • 我们遍历将每个元素存储在一个单独文件中的所有字段。这为答案提供了灵活性,可以创建与字段一样多的文件,而不仅仅是两个。

因此,如果您的输入类似于以下内容:

$ cat input
TOfile1 ] TOfile2 ] Tofile3 ] Tofile4
TOfile1 ] TOfile2

$ awk -F' []] ' '{for(i=1;i<=NF;i++) print $i > "file"i}' input

$ head file*
==> file1 <==
TOfile1
TOfile1

==> file2 <==
TOfile2
TOfile2

==> file3 <==
Tofile3

==> file4 <==
Tofile4

答案 1 :(得分:1)

sed -e 's/.*]//' myfile > TOFile2
sed -e 's/].*//' myfile > TOFile1

答案 2 :(得分:1)

这似乎正是cut utility的标准用例。没有进一步的麻烦:

cut --delimiter=']' --field=1 input.txt > TOFile1.txt
cut --delimiter=']' --field=2 input.txt > TOFile2.txt

我在这里使用长选项名称是为了便于阅读。简短版本分别为-d-f