거꾸로 된 고양이 [닫기]

거꾸로 된 고양이 [닫기]

SQL 쿼리의 결과인 두 개의 문서가 있습니다.

예를 들어 나는 내문서 1.lst그건:

    John1    0
    Julien  10
    Jules3   0
    Julie   30

이 Doc1.lst에서는 sed를 사용하여 이름 부분만 포함하므로문서 2.lst예:

    John1
    Julien
    Jules3
    Julie

나는 충분히 모른다sed이 명령은 숫자만 캡처하므로 Doc1.lst를 가져와서 Doc2.lst의 내용을 삭제하는 Doc3.lst를 생성하는 방법이 있는지 궁금합니다.

이건 반전이겠지체인. 그건 그렇고, 당신이 있다면sed이 명령은 아주 좋은 숫자만 캡처합니다.

답변1

awk원하는 출력을 얻으려면 , cut또는 를 사용할 수 있습니다 sed. 전자가 선호됩니다.

파일이 Doc1.lst다음과 같은 경우

John1    0
Julien  10
Jules3   0
Julie   30

다음 awk명령은 원하는 출력을 얻습니다. 필드 구분 기호가 공백이라고 가정합니다.

awk '{print $1}' Doc1.lst

사용cut

cut -d' ' -f1 Doc1.lst

또는 sed.notes를 사용하세요. 이 작업 sed에 사용하고 싶지 않은 흐름 편집기입니다 . sed그러나 어쨌든 이것은 당신이 원하는 행입니다.

sed 's/\([a-zA-Z]*\).*/\1/' Doc1.lst

답변2

awk '{print $1}' Doc1.lst > Doc3.lst

답변3

tr -s '[:space:]' \\n <infile | grep '^[0-9]'

...또는...

sed '/^[0-9]/P;y| |\n|;D' <infile

...아니면 그냥...

sed 's/.* //' <infile

...하지만 마지막 작업의 경우 s/ *$//뒤에 공백이 있을 경우를 대비해 먼저 수행하는 것이 좋습니다.

보다 일반적으로 다음을 사용하여 그룹에 번호를 매길 수 있습니다 sed.

sed 's/ *[^ ]\{1,\} *//' <infile

...이렇게 작성하면 줄에서 공백이 아닌 문자의 첫 번째 집합과 모든 주변 공백이 제거되어 숫자만 남게 됩니다. 하지만...

sed 's/ *[^ ]\{1,\} *//2' <infile

...대신 각 줄의 공백이 아닌 두 번째 그룹에 대해 동일한 작업을 수행합니다. 이렇게 하면 이름만 남습니다.

관련 정보