2012-10-23 4 views
0

형식으로 사용자가 입력 한 텍스트 문자열에 AWK 또는 다른 명령을 사용하는 방법 : 공간으로 구분나는 다음과 같은 텍스트 한

TAB1 TAB2 tab3에 tab4 tab5

또는 쉼표

로 구분

tab1, tab2, tab3, tab4, tab5

('TAB1', 'TAB2', 'tab3에', 'tab4', 'tab5')

또는

:나는 다음 위의 텍스트를 은밀한 할

'TAB1', 'TAB2', 'tab3에', 'tab4', 'tab5'

어떻게 그것을 할? 도움 주셔서 대단히 감사합니다!

아모스

그래서
+0

당신이 당신의 입력 데이터 값에 공백?, 즉'TAB1 탭 2withspace의 tab3에의 tab4'을 포함 할 수있는 경우를 포함 싶지 않아? 한 종류의 입력 형식을 결정하고 데이터 소스에 포함될 수없는 필드 구분자 값을 사용하면 (예 :'tab1 | tab 2 with space | tab3 | ... '. 행운을 빕니다. – shellter

+0

쉘터, 귀하의 의견에 대단히 감사합니다. 나는 그런 문제가있을 수 있다는 것을 깨닫지 못했다. 그런 상황을 어떻게 처리 할 수있는 로직을 내장하는 것이 좋을까요? – Amos

답변

3
$ cat file 
tab1 tab2 tab3 tab4 tab5 
tab1,tab2,tab3,tab4,tab5 

$ awk -v OFS="','" -v start="'" -v end="'" '{$1=$1; print start $0 end}' file 
'tab1','tab2','tab3','tab4','tab5' 
'tab1,tab2,tab3,tab4,tab5' 

$ awk -v OFS="','" -v start="('" -v end="')" '{$1=$1; print start $0 end}' file 
('tab1','tab2','tab3','tab4','tab5') 
('tab1,tab2,tab3,tab4,tab5') 

$ awk -F, -v OFS="','" -v start="('" -v end="')" '{$1=$1; print start $0 end}' file 
('tab1 tab2 tab3 tab4 tab5') 
('tab1','tab2','tab3','tab4','tab5') 

$ awk -F, -v OFS="','" -v start="'" -v end="'" '{$1=$1; print start $0 end}' file 
'tab1 tab2 tab3 tab4 tab5' 
'tab1','tab2','tab3','tab4','tab5' 
+0

에드, 도와 주셔서 대단히 감사합니다! – Amos