
아래 두 가지 출력을 얻어야합니까?
입력
/usr/IBM/WebSphere/7.0/UpdateInstaller/java/jre/bin/java -Declipse.security -Dwas.status.socket=48101
/home/axg009/usr/IBM/WebSphere/8.5/AppServer/java_1.7_64/jre/bin/java -Declipse.security -Dwas.status.socket=48101
출력 1
7.0
8.5
출력 2
7.0/UpdateInstaller/java/jre/bin/java
8.5/AppServer/java_1.7_64/jre/bin/java
답변1
첫 번째 경우:
grep -oP 'IBM/WebSphere/\K[0-9]\.[0-9]' file
두 번째의 경우:
grep -oP 'IBM/WebSphere/\K[0-9]\.[0-9].*java ' file
-P
Perl 정규 표현식을 활성화합니다.-o
일치하는 부분만 인쇄IBM/WebSphere/\K
일치하는 변수를 비울 때 까지 부분의 시작\K
부분이므로 인쇄되는 부분이 아닙니다.[0-9]\.[0-9]
숫자 뒤에 점과 다른 숫자가 옵니다..*java
두 번째에서는 java 명령이 끝날 때까지(java
뒤에 공백이 올 때까지) 일치시키려고 합니다.
답변2
ps -Aocomm= | sed -ne'/java$/s|.*/\([0-9]\.\)|\1|p'
거기에 출력된 것처럼 보이지만 ps
만약 그렇다면 검색하는 명령에 인수를 포함하는 것은 아마도 실수일 것입니다. grep
검색 패턴이 다음과 같기 때문에 결과를 ping 하는 경우 특히 그렇습니다..*java.*
또는 당신이 실행하는 명령과 일치할 가능성이 높습니다 grep
.
comm=
다행스럽게도 위에서 수행한 것처럼 및 이름 만 검색하고 해당 결과를 정리할 수 있습니다 .출력 2. 처음으로:
ps -Aocomm= | sed -ne'/java$/s|.*/\([0-9]\..\).*|\1|p'
그렇지 않은 경우 ps
에도 작동합니다.
sed 's|.*/\([0-9]\.[^ ]*\).*|\1|' <in
...을 위한출력 2, 그리고...
sed 's|.*/\([0-9]\..\).*|\1|' <in
...을 위한출력 1...
답변3
당신이하지 않았기 때문에설명원하는 것은 있지만 입력 및 출력 1 만 표시되어 있으므로 가능한 답변이 매우 많습니다.
바보 같은 것들
printf "7.0\n8.5\n"
printf "7.0/UpdateInstaller/java/jre/bin/java\n8.5/AppServer/java_1.7_64/jre/bin/java\n"
이는 입력을 읽을 필요조차 없다는 장점이 있습니다.
당신이 정말로 원하는 것이 무엇인지에 대한 최선의 추측
조금 까다로워지거든요.
grep -o "[0-9].[0-9]"입력
출력을 산출합니다7.0 8.5 1.7
모든 시퀀스를 찾고 입력의 두 번째 줄에 두 개가 있기 때문입니다. 하지만
digit.digit
grep -o "/[0-9].[0-9]/"입력
출력을 산출합니다/7.0/ /8.5/
(모든 시퀀스) 원하는 결과에 가까울 수 있습니다.
/digit.digit/
grep -o "/[0-9]\.[0-9]/"입력| grep -o "[0-9]\.[0-9]"
출력을 산출합니다
7.0 8.5
grep -o "[0-9]\.[0-9][^ ]*"입력
로 시작하는 공백이 아닌 문자의 모든 시퀀스를 가져옵니다 . 라인 에 포함되어 있기 때문에 라인 자체를 얻지 못합니다 .
digit.digit
1.7
8.5/…
____________
1 질문에는 항상 입력 및 출력 예시를 포함하시기 바랍니다. 하지만또한입력에서 출력으로 어떻게 이동하고 싶은지 설명하지 않으면 어리석은 대답을 얻게 됩니다.
답변4
grep
PCRE( )와 함께 사용 -P
:
첫 번째:
$ grep -Po '/\K[[:digit:].]+(?=/)' file.txt
7.0
8.5
두번째 것:
$ grep -Po '/\K[[:digit:].]+/[^ ]+' file.txt
7.0/UpdateInstaller/java/jre/bin/java
8.5/AppServer/java_1.7_64/jre/bin/java
첫 번째 경우에는 x와 y가 모두 숫자인
/\K[[:digit:].]+(?=/)
형식으로 숫자를 가져옵니다./x.y/
/\K[[:digit:].]+/[^ ]+
/x.y/
두 번째 경우에 우리가 원하는 부분인 공백을 나타내는 하위 문자열을 찾습니다.