2016-10-02 1 views
0

나는 CST_ID를 변수로 검색하고자하는이 같은 Unix 파일에 첫 번째 레코드를 가지고 있습니다.새로운 구분 기호의 경우 첫 번째 필드 검색

CST_ID||@||CST_NAME||@||CST_ADD||@||CST_ACC 

어떻게하면됩니까? 나는 이것을 사용하고있다.

head -1 test.txt | awk -F '||@||' '{print $1}' 

그러나 출력으로 CST_ID||을주고있다,하지만 난 단지 CST_ID이 필요합니다.

+1

이것은 코드 작성 서비스가 아닙니다. 지금까지 무엇을 시도 했습니까? 코드 게시! 네가 그것을 달렸을 때 무슨 일이 일어난거야? 대신에 당신은 무엇을 기대 했습니까? 특별히 문제가있는 것은 무엇입니까? – Robert

+0

안녕하세요, 저는 이것을 사용하고 있습니다. 헤드 -1 test.txt | awk -F '|| @ ||' '{print $ 1}'.... 그러나 CST_ID를 부여하고 있습니다. || 출력으로. CST_ID가 필요합니다. – user6911877

+1

@ user6911877 : 추후 질문을 편집하여 추가 정보를 추가하십시오. 이번에는 내가 해내려고했으나 앞으로는 직접 해봐야한다. (그리고 그것을 추가하라는 메시지를 표시하지 않고 최선의 노력을 기울여야한다. 종종 적절한 답변이 무엇인지에 대해 많이 알려준다. –

답변

1

추가 한 태그와 마찬가지로 cut을 사용할 수 있습니다.

[email protected]:~$ cat input 
CST_ID||@||CST_NAME||@||CST_ADD||@||CST_ACC 

[email protected]:~$ cut -d '|' -f 1 < input 
CST_ID 

-d은 파이프를 구분 기호로 정의합니다. 쉘이 그것을 해석하지 않도록 작은 따옴표로 묶어야합니다. -f은 원하는 필드 (이 경우 첫 번째 필드)를 지정합니다.

특정 행에 대해이 작업을 수행하려면 head (또는 tail)과 결합하십시오. 이 (가정 떠들썩한 파티)과 같은 변수

캡처 이것을 :

var=$(cut -d '|' -f 1 < input) 
+0

안녕하세요, cut -d 'I'를 사용하면 구분 기호를 | ? 단락 기호는 || @ ||입니다. 나는 cut -d '|| @ ||'를 사용하고 싶다. 쉘에서 구문 오류가 발생했습니다. – user6911877

+0

왜 '|| @ ||'을 사용 하시겠습니까? 구분 기호로? '|'를 사용하여 CST_ID 부분 만 관리한다면, 괜찮습니다. – Robert

0

시료 입력 :

cat sample 
    CST_ID||@||CST_NAME||@||CST_ADD||@||CST_ACC 

해결책 : 제 ||까지의 라인의 시작에서 grep이 보인다. -m은 첫 번째 일치 후 종료하는 데 사용됩니다.
awk : ||이 구분 기호로 설정되고 첫 번째 필드가 인쇄됩니다. NR==1은 검색을 첫 번째 입력란으로 제한합니다.

grep -m1 -oP '^.*?(?=\|\|)' sample 
CST_ID 
awk -F'\\|\\|' 'NR==1{print $1}' sample 
CST_ID 
awk -F'\\|\\|' 'NR==1{NF=1}1' sample 
CST_ID 
관련 문제