3

私はこのようなファイルを持っています

Orange 23 34 56
Apple 23 44 56
Pear 23 44 56

Orange.txtsed を使用して、フルーツの後の数字をファイル名とApple.txt別のファイルに移動するようにしたい

何かのようなもの

s -re 's/(^\w+).*//' > \1.txt

私はawkでできることを知っていますが、sedソリューションだけが必要で、他のUNIXコマンドは必要ありません

4

2 に答える 2

2

これが1つの方法GNU sedです。

sed -r 's/(\w+) (.*)/echo "\2" >> \1.txt/e' file

しかし、なぜあなたは使用できないのですかawk。それは本当に問題を簡単にします:

awk '{ print $2, $3, $4 > $1 ".txt" }' file

または、列が多い場合:

awk '{ r=$1; sub($1 FS, ""); print > r ".txt" }' file
于 2013-02-04T02:26:24.050 に答える
0

これは、可能性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" }'
于 2013-02-04T02:14:50.803 に答える