私はこの出力を持っています(前のコマンドから):
aaa something
bbb someother
ccc blabla
各行について、名前が最初のトークンで、内容が2番目のトークンであるファイルを作成したいと思います(たとえば、最初の行では、テキスト「something」を含む「aaa」という名前のファイルが必要です)
どうすればよいですか?
シンプルなawkスクリプトソリューション。 2番目のフィールドは、最初のフィールドから名前が付けられたファイルに書き込まれます。
awk '{ print $2 > $1 }' your-file
@suspectusの answer は正しいです。次のような複雑なケースの場合:
aaa something, something more and a bit extra
bbb someother someother more and a few more chars
ccc blabla blah blah boloum bloum bleh
また、名前を最初のフィールドにし、内容を行の残りの部分にしたい場合は、次のようにしてください。
awk '{for(i=2; i<=NF; i++){ printf $i" " >> $1 };print "" >> $1;}' file
または、Perlの場合:
Perl -ane 'open($f,">",shift(@F));print $f "@F\n"' file
your_command | while read name text; do
echo "$test" > $name
done
IFS
環境変数は、これが解析される方法(単語分割)に影響を与えることに注意してください。ファイル名に「特殊」文字が含まれることに特に注意する必要がありますnot (およびテキスト)。