我怎麼能使用類似的東西sed
將一個文件分成兩個,這樣文件包含
eric shwartz
david snyder
其中條目之間的 4 個空格實際上是兩個檔案的製表符,例如:
file1
:
eric
david
file2
:
shwartz
snyder
因此它將每行選項卡後面的所有內容放入另一個文件中。
答案1
解決方案可能是:
awk '{ print $1 > "file1"; print $2 > "file2"}' file
答案2
必須是腳本嗎?如果沒有,你可以這樣做:
cut -f 1 file > file1
cut -f 2 file > file2
cut
選擇一列(預設用製表符分隔)。 -f 是一個標誌,它接受一個數字作為參數,這個數字是列號。
答案3
我認為它不會比awk
方法,因此,這是一個適用於任意數量列的 Perl 解決方案,將每個列保存在自己的文件中:
perl -ane 'unless($handles[0]){
for(1..$#F+1){
open(my $fh, ">","file$_");
$handles[$_-1] = $fh
}
}
for my $i (0..$#F){
print { $handles[$i] } "$F[$i]\n"
}' file
給定一個像這樣的輸入檔:
$ cat file
foo bar baz bad
foo bar baz bad
foo bar baz bad
foo bar baz bad
foo bar baz bad
foo bar baz bad
上面的腳本將file1
透過file4
每個文件建立包含相關列的文件。
當然,你可以在 中做同樣的事情awk
,更加簡單和優雅,但是這樣做的樂趣在哪裡呢?
awk '{for(i=1;i<=NF;i++){print $i > "file"i}}' file
答案4
moreutils(在許多發行版儲存庫中可用,或者http://joeyh.name/code/moreutils/)有一些方便的實用程序,其中之一在這裡有幫助:
pee 'cut -f1 >file1' 'cut -f2 >file2' < file