답변:
파이프를 사용하여 데이터 (예 : cat columns.txt)를 잘라내십시오.
cat columns.txt | cut -d" " -f5
제공 한 예제 데이터에서 단일 공백 구분 기호는 원하는 데이터를 필드 5에 넣습니다. 해당 출력을 다른 파일로 보내려면 리디렉션을 사용하십시오.
cat collumns.txt | cut -d" " -f5 > field2.txt
awk 명령을 사용하면 다음과 같은 작업을 수행하여 다음과 같은 작업을 수행 할 수 있습니다. awk에 대해 더 자세히 알아야 할 데이터가 있기 때문에 현재 필드를 자동으로 인식합니다.
awk -F' ' '{print $2}' columns.txt
grep -Po '^[^ ]+[ ]+\K[^ ]+' file
위의 방법은 아래와 같이 쉘 스크립트에서 "루트"사용자로 변경하는 경우 데이터 추출을위한 awk와 같은 Linux 유틸리티가 작동하지 않을 때 매우 유용합니다.
sudo -i <<EOF
ps aux | grep -E -i "[l]js" |grep -v "javaagent" | awk '{print $2}' # So awk won't work here
ps aux | grep -E -i "[l]js" | grep -v "javaagent" | grep -Po '^[^ ]+[ ]+\K[^ ]+'
EOF
awk
예제에서 "작동하지 않는 "유일한 이유 는 here-document가 인용되지 않았기 때문에 $2
쉘에서 두 번째 위치 매개 변수로 확장 되었음을 의미합니다 . 해결책은 아마도 grep
명령 으로 전환하는 것이 아니라 $
in $2
을 이스케이프 처리 \$2
하거나 <<'EOF'
대신에 전체 문서를 인용하는 것 입니다 <<EOF
. 또한 예제의 작업은보다 간단하게 수행됩니다 pgrep
.
cat ... |
이 거의 필요하지 않습니다. 대부분의 Unix 명령cut
은 하나 이상의 입력 파일을 인수로 사용합니다 (예 :)cut -d" " -f5 columns.txt
.