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