2013-12-06 2 views
1

다음과 같은 파일이 있습니다. 파일의 행을 행으로 만듭니다.

roger 
"supplier" 
anger 
"easter" 
robin 
"badguy" 
sweety 
"i like you" 
goldy 
"I hate you" 

나는이 파일이 필요

내가 잠시 루프를 통해 퍼팅의 일을 오전이 개 다른 파일로 읽을 다음 파일을 연결, 도와주세요

roger|supplier 
anger|easter 
robin|badguy 
sweety|i like you 
goldy|I hate you 

처럼 무언가로 변환 할 수 있습니다. 나는 좋은 생각이 아니므로 몇 가지 제안을 올리려고합니다. awk

+0

이 막연한 질문의 종류,하지만 난 당신이 무슨 뜻인지 이해하지 AWK – RishiG

+0

에 대한 작업처럼 들린다. 더 자세히 설명해주십시오. – user2999920

+0

가능한 복제본 http://stackoverflow.com/questions/3194534/joining-two-consecutive-lines-awk-sed – AlG

답변

2

한 가지 방법 :

$ awk 'NR%2{a=$0;next}{print a,$2}' FS='"' OFS='|' file 
roger|supplier 
anger|easter 
robin|badguy 
sweety|i like you 
goldy|I hate you 

또는 xargssed와 약간 짧은 :

$ xargs -n2 < file | sed 's/ /|/' 
roger|supplier 
anger|easter 
robin|badguy 
sweety|i like you 
goldy|I hate you 

하거나 sed :

$ sed '$!N;s/\n/|/;s/"//g' file 
roger|supplier 
anger|easter 
robin|badguy 
sweety|i like you 
goldy|I hate you 
+1

+1 우아한 솔루션! –

+0

xargs가 매력으로 작동했습니다. 감사합니다. @ sudo_O – user3040077

0

방법이있어?

echo 'roger 
"supplier" 
anger 
"easter" 
robin 
"badguy" 
sweety 
"i like you" 
goldy 
"I hate you"' \ 
| awk '{ 
    if (NR%2){ 
    printf("%s", $0) 
    } 
    else { 
    gsub(/"/,"", $0);printf("|%s\n", $0) 
    } 
}' 

출력

roger|supplier 
anger|easter 
robin|badguy 
sweety|i like you 
goldy|I hate you 
관련 문제