Orange 23 34 56
Apple 23 44 56
Pear 23 44 56
我想用sed,使其果实后移动号码文件名Orange.txt
和Apple.txt
在不同的文件
像
s -re 's/(^\w+).*//' > \1.txt
我知道我可以在awk完成,但我只希望SED解决方案没有其他unix命令
Orange 23 34 56
Apple 23 44 56
Pear 23 44 56
我想用sed,使其果实后移动号码文件名Orange.txt
和Apple.txt
在不同的文件
像
s -re 's/(^\w+).*//' > \1.txt
我知道我可以在awk完成,但我只希望SED解决方案没有其他unix命令
这里有一种方法,使用GNU sed
:
sed -r 's/(\w+) (.*)/echo "\2" >> \1.txt/e' file
但是,为什么你不能使用awk
。这真的trivializes问题:
awk '{ print $2, $3, $4 > $1 ".txt" }' file
或者,如果你有很多列:
awk '{ r=$1; sub($1 FS, ""); print > r ".txt" }' file
谢谢史蒂夫,我只是想知道这是否可以实现。我想我可能不是全功能odd sed,但多数民众赞成 – user2024264
如果您使用的是GNU sed,那么:'sed -r's /(\ w +)(。*)/ echo“\ 2”>> \ 1.txt/e'文件'就足够了。 – potong
@potong:谢谢你的伴侣。我怎么想的? – Steve
这只有在sed
,如果你愿意提前写下所有可能的水果的巨大列表是可能的。然后它看起来像这样:
#! /usr/bin/sed -nf
/^Apple /w Apple.txt
/^Durian /w Durian.txt
/^Kiwi /w Kiwi.txt
/^Orange /w Orange.txt
/^Pear /w Pear.txt
/^Pineapple /w Pineapple.txt
/^Tomato /w Tomato.txt
# ... perhaps dozens more lines ...
如果你不能提前列出所有可能的水果,那么这显然是不可能的。虽然你可以,但是,你真的想把自己设置为每日WTF的特色吗?
awk '{ print > $1 ".txt" }'
检查这里:HTTP://theunixshell.blogspot.com/2013/01/creating-files-based-upon -line-number.html – Vijay