기본적으로 동일한 데이터인 운전자의 성과 국적을 포함하는 두 개의 텍스트 파일 F1a.txt
과 가 있습니다 . F1b.txt
예를 들어:
Hamilton GBR
Alonso SPA
이 두 파일을 에 연결했습니다 F1_drivers.txt
. 다음을 수행하려면 어떻게 해야 합니까?
알파벳순으로 정렬된 파이프를 사용하여 영국식
F1a.txt
과F1b.txt
영어를 표시하는 드라이버입니다.현재 디렉터리에 이라는 이름으로 작성된 긴 파일 목록을 출력합니다
listing
.새 디렉토리로 변경하고 해당 디렉토리에 있는 긴 파일 목록을
listing
.GER
F1
Grep은 로 시작하고 끝나는 모든 파일에서 문자열을 찾습니다.txt
.#4를 수행하되 출력을 파이프하여
cat
다음과 같은 출력이 포함된 파일을 생성합니다.grepout.txt
도움이 될 만한 기본 정보가 있지만 어디로 가야 할지 모르겠습니다.
답변1
cat F1a.txt F1b.txt | grep British | sort -d
우리는 *nix 시스템의 파일 내용을 읽기 위해 cat을 사용합니다.
그런 다음 파이프(문자 |)를 사용하여 cat의 출력을 grep으로 파이프합니다.
그런 다음 grep 명령을 사용하여 cat에 대한 입력에서 "British"라는 단어를 검색한 다음 grep을 사용하여 출력을 필터링하여 올바른 행을 표시합니다.
그런 다음 다른 파이프를 사용하여 grep의 출력을 sort에 공급하고, 짐작할 수 있듯이 입력을 정렬합니다. -d 매개변수를 사용하여 알파벳순으로 정렬합니다.ls -al > listing
이를 위해서는 쉘 I/O 리디렉션 연산자 ">"를 사용해야 합니다.
BASH를 사용하고 파일을 사용하면 BASH는 다음을 수행합니다.
STDOUT 또는 표준 출력(명령줄 또는 도구 출력)을 허용합니다.
해당 경로에 파일이 있으면 STDOUT의 새 데이터로 해당 파일을 덮어쓰고, 그렇지 않으면 생성합니다. 파일을 작성하고 STDOUT의 데이터를 파일에 씁니다.
ls를 사용하여 작업 디렉토리에 대한 정보를 제공하고 -al 매개변수를 제공합니다. 이는 기본적으로 -allfiles를 -longlisting 형식으로 표시하도록 지시합니다.
그런 다음 > 리디렉션 연산자를 사용하여 ls의 출력을 파일 목록에 넣습니다.cd a/directory/
ls -al >> /path/to/listing
CD는 디렉토리를 변경합니다. cd a/directory/의 의미는 임의의 디렉토리를 선택하여 명령과 함께 사용하는 것입니다. 실제로 원하는 것이 아니라면 문자 그대로 a/directory/로 cd하는 것이 아닙니다.
그런 다음 이전 ls 명령(remember, -allfiles, -longformat)을 재사용하고 다른 쉘 리디렉션 명령을 사용합니다. 이번에는 STDOUT을 허용하고 이를 이후에 지정된 파일에 추가하여 이를 생성할 때마다 파일 목록으로 보내는 >>를 사용합니다.cat F1*.txt | grep GER
이 시점에서 우리는 첫 번째 항목과 동일한 작업을 수행합니다. 즉, cat을 사용하여 파일에서 데이터를 읽고 grep을 사용하여 검색합니다. 그러나 우리는 또 다른 새로운 셸 연산자인 이번에는 일반적으로 와일드카드 문자로 알려진 별표를 사용하고 있습니다. F1*.txt가 쉘에 지시하는 것은 기본적으로 다음과 같습니다.
다른 디렉토리를 지정하지 않았으므로 현재 디렉토리에서 모든 파일을 찾습니다. F1으로 시작하고 그 뒤에 아무 것도 없고 .txt로 끝나는 경우 해당 파일 이름이 반환됩니다. 이렇게 하면 cat은 여러 파일을 가져오고 해당 작업을 수행합니다. 즉, 지정된 파일 내용을 STDOUT으로 연결합니다.
그런 다음 이전과 마찬가지로 STDOUT의 모든 정보를 grep으로 파이프하고 GER을 검색하도록 지시합니다.cat F1*.txt | grep GER | cat > grepout.txt
그런 다음 우리가 할 수 있는 일은 grep의 출력을 입력으로 다시 cat에 파이프하는 것입니다. 그런 다음 이전에 했던 것처럼 > 연산자를 통해 cat의 출력을 저장하여 전체 she-bang을 완성합니다.