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