txt 파일 패턴에 따라 2줄을 1줄로 만들기
이곳을 통해 많은 지식을 배워갑니다.
선배 프로그래머분들께 감사의 말씀을 전하며 질문을 올립니다.
제가 프로그램을 돌리면 다름과 같은 패턴으로 txt 파일이 나옵니다.
index Data1 Data2 Data3
Data4 Data5 Data6
1.0000 3.224e-08 3.144e-08 1.398e-11
1.910e-11 1.654e-11 -2.916e-06
2.0000 3.193e-08 3.208e-08 1.547e-11
1.790e-11 1.669e-11 -2.902e-06
이것을
index Data1 Data2 Data3 Data4 Data5 Data6
1.0000 3.224e-08 3.144e-08 1.398e-11 1.910e-11 1.654e-11 -2.916e-06
2.0000 3.193e-08 3.208e-08 1.547e-11 1.790e-11 1.669e-11 -2.902e-06
와 같이 바꾸어서요, Excel에서 편집하기 쉽게 만들고 싶습니다.
(엑셀에서는 빈 공간을 기준으로 각각의 값을 각각의 셀로 옮기는 기능이 있습니다.)
어떻게 하면 가장 편하게 1줄로 바꿀 수 있을까요?
그럼 답변 부탁드립니다.
제가 아직 awk에 대해
제가 아직 awk에 대해 초보수준이라서, 좀 엉성하지만, 결과는 나오는 것 같습니다.
text file 을 test.txt 라 하면,
cat test.txt |awk '{line=$0;getline;print line, $0;}'
line break 없애는 방법
답변 감사드립니다.
제가 좀 더 공부를 해서 awk를 알면 응용이 가능할텐데....지금은 시간도 없고...해야할 일은 너무 많군요...
자세히 보니까 각각의 줄이 바뀔 때마다, 줄 끝에는 line break 가 있더군요.
line break를 없애는 방법만 알면 쉽게 해결될 것 같은데...
line break를 없애는 쉬운 방법이 있을까요?
^M 기호 말씀하시는
^M 기호 말씀하시는 건가요? 저는 주로 vi 에서 파일을 열은후에 :%s/^M//g 로 없애 버려요.
(여기서 ^M은 [CTRL]+V , [CTRL]+M 을 타입해야하구요)
빈 줄을 무시하면서
빈 줄을 무시하면서 두 줄씩을 합치는 문제로군요. (맞나요?)
right tool for the right job(맞나요?)은 아닐지 몰라도 C로 짜니 편하군요. :)
그나저나 "line break를 없앤다"고 하시면;;;
Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.
어차피 엑셀에서 작업하실꺼라면...
메모장밖에 에디터가없어서 정규식을 사용할수 없어서 엑셀 깔려 있다면 그냥 엑셀로 한줄로 만드시죠?
파일 불러들린 후 공백문자를 구분문자로 읽어드리면...
A1 B1 C1 D1
A2 B2 C2
...(반복패턴..)
위와 같이 될텐데...
A1 B1 C1 D1 E1=if(D1<>"",A1&" "&B1&" "&C1&" "&D1&" "&A2&" "&B2&" "&C2,"")
A2 B2 C2
E1 셀에 위와 같이 입력하면 될거 같은데요...
그다음은 뭐 쭈욱 드래그 하면 되겟죠...
/* How to Love Others */
while(GetDepth(Love) < Enough) DoLove();
/* How to Love Others */
while(GetDepth(Love) < Enough) DoLove();
visual studio 2005 에서 정규식이 되네요...
그래서 다시 해봣습니다.
찾을 문자열 : {.+}:b{.+}:b{.+}:b{.+}\n{.+}:b{.+}:b{.+}
바꿀 문자열 : \1 \2 \3 \4 \5 \6 \7
정규식 사용 체크
(vs2005 에서는 태그를 {}로 표현하더군요.. 일반적으로 다른 에디터는 ()를 쓰는데... :b 는 공백문자를 뜻합니다. \n는 개행문자...)
/* How to Love Others */
while(GetDepth(Love) < Enough) DoLove();
/* How to Love Others */
while(GetDepth(Love) < Enough) DoLove();
생각해보니 단순한 문제가 아니더군요....
생각해보니 단순한 문제가 아니더군요....
단순히 line break를 없애는 것이 아니라, Index를 중심으로 한줄 한줄 만들어야 하기 때문에,
특정 패턴을 읽고, line break를 없애는 방법을 알아내야할 듯 합니다.
어떤 툴, 프로그램을 익히는 것이 가장 빠를까요?
선배 프로그래머 분들의 조언을 부탁드립니다.
awk
어설프게 만들어봤습니다.
첫번째 필드를 검사해서 index 면 line break 없이 출력하도록 하였습니다.
(index 는 항상 x.0000 형식으로 나오는것으로 가정)
---
배려하는 마음을 갖자.
---
배려하는 마음을 갖자.
댓글 달기