패턴별 하위 집합 변수

패턴별 하위 집합 변수

bash 변수 "foo"에 할당한 다음 형식의 구분된 파일이 있습니다.

echo $foo

A  1  hello
B  2  hello
C  3  hello
D  4  world
E  5  world
F  6  world

저는 이 변수를 새 텍스트 파일로 분할하여 열 3의 값이 동일한 모든 행이 하나의 파일에 있도록 할 수 있는 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

관련 정보