我需要分割包含此类型数据的文件;
Jazz Guitar 1 16 3 4
Carlos Guitar1 16 3 5
Overdrive Gtr1 16 3 6
Western Gtr&Whis 16 3 7
Pat Guitar Synth 16 3 8
Shadow Guitar 16 3 9
Clean El.Guitar 16 3 10
Overdrive Gtr2 16 3 11
分成 2 个文件 - 一个仅包含最后 3 个数字 - 另一个包含这些数字之前的所有内容,如下所示;
16 3 4
16 3 5
16 3 6
16 3 7
16 3 8
16 3 9
16 3 10
16 3 11
和
Jazz Guitar 1
Carlos Guitar1
Overdrive Gtr1
Western Gtr&Whis
Pat Guitar Synth
Shadow Guitar
Clean El.Guitar
Overdrive Gtr2
SED、AWK 或类似命令将会受到赞赏。
答案1
使用cut
选择列,并将其与rev
从右边计数相结合:
rev file | cut -d' ' -f1,2,3 | rev > file1
rev file | cut -d' ' -f4- | rev > file2
答案2
GNU awk:
gawk '{print $(NF-2), $(NF-1), $NF > "file1"; NF -= 3; print > "file2"}' input
“file1” 将包含最后 3 列。
“file2” 将包含初始列。
也可以使用mawk
。对于 MacOS 上的默认 awk,你必须执行
/usr/bin/awk '{
print $(NF-2), $(NF-1), $NF > "file1"
$(NF-2) = ""; $(NF-1) = ""; $NF = ""
print > "file2"
}' input