2012-03-06 3 views
1

각 행의 필드 수가 서로 다른 파일의 모든 행의 첫 번째 열과 마지막 열 뒤에 쉼표를 삽입하고 싶습니다.첫 번째 열 뒤 및 마지막 열 앞에 쉼표를 삽입하십시오.

예.

test1 test2 test3 
test1 test2 test3 test4 test5 test6 
test1 test2 test3 test4 
test1 test2 test3 test4 test5 

나는 것처럼 보이게하려는 :이 파일 나는 다음과 같이 뭔가를 시도 MA

test1, test2, test3 
test1, test2 test3 test4 test5, test6 
test1, test2 test3, test4 
test1, test2 test3 test4, test5 

그러나 그것은 작동하지 않습니다 (구문 오류 또는 전혀 예상 출력 중 하나) :

awk '{NF=NF-1;for (i=NF; i==NF; i--) $i="," print $NF }' my_file1 
+0

세미콜론 –

답변

3

for -loop이 필요하지 않습니다. 당신은 단지 두 분야를 바꾸고 있습니다.

나는 줄 바꿈 (및 기타 공백) awk을 할 수 있습니다 (다른 언어를) 찾을 수보다 읽기 훨씬 :

% awk '{ 
    $1 = $1"," 
    $(NF - 1) = $(NF - 1)"," 
    print 
} 
' my_file1 
test1, test2, test3 
test1, test2 test3 test4 test5, test6 
test1, test2 test3, test4 
test1, test2 test3 test4, test5 
+0

기다려 ... 뭐라구? 추가 된 공백으로 내 솔루션을 게시 했습니까? –

+0

@KarolyHorvath : 저는 느린 타이피스트입니다. 게시하기 전에 제 대답을 테스트하고있었습니다. 또한 내가 그것을 보았을 때 나는 당신의 것을지지했습니다 (내가 시작할 때 거기에 없었습니다). 누락 된'''은 어디 있습니까? – Johnsyweb

+1

그것이 거기에있다, 내가 그것이 있기를 기대했던 선에 없다. 시끄러워. –

3
awk '{ $1=$1","; $(NF-1)=$(NF-1)","; print }' 

참고 : NF = 2이 아마 당신은 요구하지만 라인에있는 첫 번째 필드, 후 두 쉼표를 삽입합니다 네가 정말로 원하는 것이 아니다. 처리하고 싶다면 if을 추가하십시오.

+0

누락 이것은 내가 필요한 것입니다. 빠른 응답에 대해 Karoly에게 감사드립니다. – slayedbylucifer

+0

동의 ... 고마워. – slayedbylucifer

2

당신이 나오지 대답에 관심이 있다면 : sed -e 's/ /, /' -e 's/\(.*\) /\1, /'

+0

마지막 값 다음에 공백이 없으면 작동합니다. 마지막에 공백이 있으면'sed 's/\ (. * \) \ (\ S \) /, \ 1, \ 2 /'' – potong

관련 문제