bash変数"foo"に割り当てた次の形式の区切りファイルがあります。
echo $foo
A 1 hello
B 2 hello
C 3 hello
D 4 world
E 5 world
F 6 world
私はこの変数を新しいテキストファイルに分割し、列3の値が同じすべての行が1つのファイルになるようにするawkベースのソリューションを見つけようとしています。完璧な世界では、ファイル名は3列の文字列で指定されています。この場合、ファイルは次の内容を含む「hello.txt」と「world.txt」です。
cat hello.txt
A 1 hello
B 2 hello
C 3 hello
cat world.txt
D 4 world
E 5 world
F 6 world
編集:以下に説明するように、いくつかの以前の試みを含める必要があります。 grepのようなものを使ってパターンがあらかじめ知られている場合、これを行う方法を知っていますが、ワイルドカードを許可する方法がわかりません。私は非常に特定のパターンでのみ抽出する必要があることがわかっている場合は、通常これを行います。
echo "$foo" | grep -w "hello" > hello.txt
echo "$foo" | grep -w "world" > world.txt
ベストアンサー1
あなたは利用可能でなければなりません
awk '{print > $3 ".txt"}' <<< "$foo"
前任者。
$ echo "$foo"
A 1 hello
B 2 hello
C 3 hello
D 4 world
E 5 world
F 6 world
awk '{print > $3 ".txt"}' <<< "$foo"
$ head {hello,world}.txt
==> hello.txt <==
A 1 hello
B 2 hello
C 3 hello
==> world.txt <==
D 4 world
E 5 world
F 6 world