2014-04-18 27 views

回答

3

使用awk

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

==> file2 <== 
TOfile2 
  • 設置d elimiter到[]],因爲]是一個特殊的字符,我們把它放在字符類中來考慮它的字面意思。
  • 我們遍歷存儲每個元素的所有字段在一個單獨的文件中。這給了答案靈活性,以創建儘可能多的文件,因爲有字段,而不僅僅是兩個。

因此,如果你輸入類似如下:

$ 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
sed -e 's/.*]//' myfile > TOFile2 
sed -e 's/].*//' myfile > TOFile1 
1

這似乎恰恰是標準的用例爲cut utility。閒話少說:

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

我在這裏使用了很長的選項名稱以提高可讀性。短版本分別爲-d-f

相關問題