2010-07-24 5 views
-1

안녕하세요, file1.txt에 'sed'명령을 실행하고 StringA와 StringB 사이에있는 모든 이름을 추출해야합니다. 예 : "Nickname": "bad_name", bad_name을 추출한 다음 저장합니다. 모든 결과도 Output.txt입니다. 이게 가능한가 아니면 다른 명령을보아야 하는가?sed 명령 줄

+0

StringA 및 StringB 란 무엇입니까? 인용 부호? –

+0

이 예제에서'StringA'와'StringB'는 무엇입니까? 항상':'다음에 나오는 단어입니까 아니면 실제로 변경되지 않는 문자열을 찾고 계십니까? – Wolph

+0

몇 줄의 샘플 입력과 출력을 게시 할 수 있다면 누군가가 도울 수있을 것입니다. 당신이 요구하는 것이 명확하지 않습니다. –

답변

2

file1.txt의 샘플을 더 표시하지 않고 일관된 데이터 형식이 있다고 가정합니다. 이 경우, 다음 파일에 대한 AWK

echo '"Nickname":"bad_name"' | awk -F":" '{print $NF}' 

, 단지 입력 파일 이름

awk -F":" '{print $NF}' file > output.txt 

그렇지 않으면 사용하는 우리가 함께 작동하도록 더 많은 샘플 데이터를 제공합니다.

1

은 나오지 사용 :

[email protected]:~$ cat file1 
"Nickname":"bad_name" 
"First Name":"Dmitry" 
bad line 
"Dog Name":"Chuppy" 
another bad line 

[email protected]:~$ cat file1 | sed -e '/\(.\+\)":"\(.\+\)"/!d' -e 's/"\(.\+\)":"\(.\+\)"/\2/' 
bad_name 
Dmitry 
Chuppy 

첫 번째 표현은, 두 번째는 2 일치하는 그룹과 패턴 형식이 잘못된 라인을 대체 삭제합니다 - 두 번째 따옴표의 내용을.

+0

파일에 다른 사용자 정보가 있으므로 "Nickname ":"(따옴표 포함) 및 끝 문자열 ", 예 :"Nickname ":"bad_name ", 출력 : bad_name으로 bad_name을 추출합니다. : 이름이 시작되는 위치를 결정하는 데 자체적으로 사용할 수 없습니다. 오직 다른 데이터에서 유일하지 않기 때문에 우리에게 : – acctman

+0

글쎄,이 경우 표현의 첫 번째 부분 (첫 번째 하위 패턴)을''닉네임 ''으로 변경해야합니다. 그러면 명령어는 다음과 같습니다 : 'cat file1 | sed -e '/ "닉네임": "\\(.\+\\)"/!d'-e '/"닉네임 ":"\\ (. \ + \\) "/ \ 1 /'' – dmedvinsky

+0

목록에있는 명령을 시도했지만 파일 내용 만 표시했습니다. sed 명령이 실행되거나 출력되지 않았습니다. cat file1.txt | sed -e '/ "닉네임": "\\(.\+\\)"/!d'-e '/"닉네임 ":"\\ (. \ + \\) "/ \ 1 /' – acctman