Programming,  컴퓨터와 인터넷

[Text Processing] 파일 마지막에 새로운 줄 추가하기

wiki에 현행화하여 작성해뒀습니다. OS_일반_시스템/Unix와_Linux_Tips/sed로_맨_마지막_줄에_행_추가하기

[ CnUnix ] in KIDS
글 쓴 이(By): guest (gues) <210.183.233.205>
날 짜 (Date): 2000년 4월 28일 금요일 오전 11시 56분 12초
제 목(Title): [보통질문]텍스트 파일마지막에 새줄추가?

텍스트 파일에서 특정 문자열을 찾은 다음 존재하지 않으면 마지막줄에 새로운 줄을 추가하려 합니다.

첫번째 문제는 감이 잘 안오고요

두번째는

sed '$s/$/추가문자/g' test.txt > test.txt.new

와 같이 했는데 그냥 n추가문자가 마지막출에 붙어서 나오네요. 내 의도는 캐리지리턴추가문자 를 추가하려 했는데 이 캐리지리턴을 어떻게 표현해야 하는지요.

그리고 특정 문자열을 찾아서 있는지 없는지 판단하는 루틴은 어떻게 하나요?

스크립트 초보.

[ CnUnix ] in KIDS
글 쓴 이(By): terzeron (microkid)
날 짜 (Date): 2000년 4월 28일 금요일 오후 01시 58분 54초
제 목(Title): Re: [보통질문]텍스트 파일마지막에 새줄추�

굳이 sed로 하셔야 한다면 다른 분들이 말씀해주시겠지만, 이론적으로는 다음에 엔터를 쳐서 하면 된다고 하는데, shell이 닭짓을 해서 잘 안 되는군요.

저는 그래서 perl로…

echo "All or Nothing" | perl -pe 's/All/Nothing/g'

물론 awk쓰면 되겠지만, 제가 잘 모르겠네요.

[ CnUnix ] in KIDS
글 쓴 이(By): belami (- 커피 -)
날 짜 (Date): 2000년 4월 28일 금요일 오후 08시 47분 04초
제 목(Title): Re: [보통질문]텍스트 파일마지막에 새줄추�

unix에서는 캐리지 리턴 대신 라인 피드 사용. ^J (ascii 10). CTRL-V를 누른 상태에서 CTRL-J를 눌러 입력 (sh, csh, vi)

패턴 찾기

grep 'pattern' filename > /dev/null 2>&1 (sh)
if [ $? -eq 0 ]; then
echo "found"
else
echo "not found"
fi

패턴 찾은 후 추가문자 추가

sed -e '/pattern/a^J추가문자' filename (sh, csh, vi)

모든 줄에서 줄 바꾸고 추가문자 추가

sed -e '/$/a^J추가문자' filename (sh, csh, vi)

[ CnUnix ] in KIDS
글 쓴 이(By): Gizmos ( 그림이)
날 짜 (Date): 2000년 4월 29일 토요일 오전 04시 31분 22초
제 목(Title): Re: [보통질문]텍스트 파일마지막에 새줄

vi에서도 ^J가 입력 가능한가요? 전 안 되던데.. vi 마다 다른가요?

[ CnUnix ] in KIDS
글 쓴 이(By): terzeron (microkid)
날 짜 (Date): 2000년 4월 29일 토요일 오전 10시 22분 37초
제 목(Title): Re: [보통질문]텍스트 파일마지막에 새줄

저는 TCSH쓰는데, 잘 안 됩니다. C-V C-J누르면 ^M이라고 나오거든요. 물론 보이기는 C-V C-M과 같지만 약간 차이가 있고, 두가지 모두 원하는 대로 잘 안 되네요.

답글 남기기