2013-06-14 3 views
-1

프로그램의 자동 생성 로그에 대한 파서를 만들고, csv를 생성하는 파서의 일부가 이상한 동작을하기 시작했습니다. 미친거야 부분이 하나입니다Bash : 이상한 에코 동작

echo "$COMMAND_3_NAME,,$TIME_1_START,$TIME_1_END,$DIFF_1,,$TIME_2_START,$TIME_2_END,$DIFF_2,,$TIME_3_START,$TIME_3_END,$DIFF_3,,$TIME_USR_START,$TIME_USR_END,$DIFF_USR" >> $OUT_NAME 
이 줄은 다음과 같은 출력이 생성됩니다

:

Command_3,,458.7 
484.0,483.9 
507.5,-458.7 
967.9 
507.5,,271.8 
271.8,271.8 
271.8,-271.8 
543.6 
271.8,,,,,,967.8 
967.8,967.8 
967.8,-967.8 
1935.6 
967.8 

을 그리고 난이 "나오지도"할 수 있기 때문에 거기에 어떤 \ n을가 안 s/\ n // g ""모든 단일 변수에서 인쇄하고 있습니다. 나오지도 입력

foo 
bar 

를 들어

+0

가 줄 바꿈에'N \ '나오지도 변환 버전을합니까 bash는 변수 확장을 사용하거나 치료를 않는 것입니다 \ '와'n '? – chepner

+0

당신의 sed에서 \\ n을 시도하십시오 – Franko

+0

더 나은 아직'tr -d '\ n "을 시도하십시오 – qwwqwwq

답변

1

는 문자열 foobar하지 foo\nbar\n에 식을 실행합니다.

sed -e 's/\n//g' 따라서 줄 바꿈을 대체하지 않습니다. 이 개 리터럴 문자 '로

tr -d '\n'을 통해 파이프 당신이 할 수있는, 줄 바꿈을 삭제하거나 "${myvariable//$'\n'/}"

+0

그건 문제가되지 않습니다. 문제는 에코가 ','를 '\ n'으로 바꾸는 것입니다. 문제가 발생한 후에 sed 라인을 추가했습니다. –

+0

','를'\ n'로 대체하지 않습니다.','s에는 줄 바꿈이 없기 때문에','가 여러 개 있습니다. 변수 자체에는 줄 바꿈이 포함될 가능성이 큽니다. 'printf "% q \ n" "$ TIME_1_START"는'$ '458.7 \ n484.0'으로 표시됩니다. 제거하려면 응답을 참조하십시오. –

+0

그럼, 어디로 가고 있니? 에코 라인을 다시 읽고 s를 계산하십시오. –