'파일비교'에 해당되는 글 8건
- 2011.09.03 파일 비교 스크립트 8
- 2010.05.25 파일비교 스크립트 5 2
- 2009.12.22 15. 텍스트 파일 포맷 변경 2
- 2009.12.18 14. 지난 파일 압축하고 삭제하기 2
- 2009.11.05 13. 파일 비교 스크립트 4 2
- 2009.10.21 12. 파일 개수 비교해서 삭제하는 스크립트 3
- 2009.09.18 10. 파일비교 스크립트2 3
- 2009.09.10 9. 여러 파일 하나의 txt 파일로 합치기 스크립트 3
파일 비교 스크립트 8
최종 버전 파일 비교 스크립트
어느 txt 파일이든 사이즈의 크기는 상관없음.
a.txt 와 b.txt 에 담긴 내용을 sort 하여 비교
#!/bin/bash
### sort stage
sort -u a.txt > imsy
cat imsy > a.txt
sort -u b.txt > imsy
cat imsy > b.txt
### compare stage
comm -12 a.txt b.txt > duble.txt
comm -23 a.txt b.txt > a_only.txt
comm -13 a.txt b.txt > b_only.txt
### Result stage
echo "################################"
echo " a_only.txt is existed in a.txt"
echo "################################"
echo "################################"
echo " b_only.txt is existed in b.txt"
echo "################################"
echo "#########################################"
echo " double.txt is existed in a.txt & b.txt"
echo "#########################################"
'쉘스크립트' 카테고리의 다른 글
awk 로 특정 라인에 특정 문자 삽입하기 (2) | 2013.04.08 |
---|---|
awk 관련 추가 설명 (2) | 2012.12.03 |
CPU 과부하와 MEM 과부하 프로세스 찾는 스크립트 (0) | 2012.03.22 |
파일 사이즈가 0 인 개수 확인 스크립트 (0) | 2011.09.19 |
1초 마다 특정 작업을 하는 스크립트 (0) | 2011.09.07 |
날짜 표시 쉘 스크립트 (0) | 2011.08.05 |
파일 라인안에 앞에 내용 추가 / 맨뒤에 내용 추가 방법 (0) | 2011.06.17 |
파일비교 스크립트 5 (2) | 2010.05.25 |
파일들의 확장자만 변경 (0) | 2010.04.22 |
15. 텍스트 파일 포맷 변경 (2) | 2009.12.22 |
파일비교 스크립트 5
b.txt 에는 부분 파일
a.txt 에 있는 내용중에 b.txt 파일에 있는 내용이 포함되어 있는 라인만 뽑아내는 스크립트
dir=$PWD
for mdn in `cat $dir/b.txt | awk -F, '{print $1}'`
do
grep $mdn $dir/a.txt >> $dir/tmp.txt
done
결과는 tmp.txt 라는 파일에 저장된다.
'쉘스크립트' 카테고리의 다른 글
파일 사이즈가 0 인 개수 확인 스크립트 (0) | 2011.09.19 |
---|---|
1초 마다 특정 작업을 하는 스크립트 (0) | 2011.09.07 |
파일 비교 스크립트 8 (0) | 2011.09.03 |
날짜 표시 쉘 스크립트 (0) | 2011.08.05 |
파일 라인안에 앞에 내용 추가 / 맨뒤에 내용 추가 방법 (0) | 2011.06.17 |
파일들의 확장자만 변경 (0) | 2010.04.22 |
15. 텍스트 파일 포맷 변경 (2) | 2009.12.22 |
14. 지난 파일 압축하고 삭제하기 (2) | 2009.12.18 |
13. 파일 비교 스크립트 4 (2) | 2009.11.05 |
12. 파일 개수 비교해서 삭제하는 스크립트 (3) | 2009.10.21 |
15. 텍스트 파일 포맷 변경
파일포맷을 확인하는 방법
test: ASCII text
file 명령어는 ASCII 파일인지 UTF-8 인지 UNICODE 인지 확인하는 명령어
텍스트의 포맷이 일정하지 않아서 스크립트로 처리시에 오류가 생길 경우는
recode 명령어를 통해서 포맷을 일정하게 해주는 것이 좋다.
yum -y install recode 를 통해서 리눅스 CentOS 에 설치하고
recode -l 으로 포맷형식들을 확인
recode -f UTF-8 <파일명> 이라고 명령을 내리면 해당 파일이 UTF-8 로 포맷형식이 바뀌게 된다.
dos2unix 명령어는 VI 편집기로 열었을 때 라인끝에 ^M 이라는 문자가 보이는 경우가 있다
이것을 지워주는 역할을 한다.
그리고 Col 필터는 "\n\r" 문자를 "\n" 문자로 바꾸어 주는 필터이다. 또한 공백문자
를 탭문자로 바꾸고, 백스페이스 문자를 없애는 기능을한다
( 참고 : http://darkrang.tistory.com/117 )
따라서 vi 편집기로 열었을 때에 전체적으로 이상한 기호가 보이거나 한다면
위의 recode 명령어를 사용해서 텍스트 파일의 포맷을 변경해야 한다.
또한 recode 는 * 를 지원하므로
recode -f utf-8 *.txt 라고 적어도 모든 txt 파일에 대해서 적용된다.
recode -v EUC-KR...UTF-8 *.txt
다음은 현재 디렉토리 안의 파일들의 txt 파일만 찾아서 파일포맷을 변경하는 스크립트이다
#!/bin/bash
DIR=$PWD
count=0
ls -l *.txt | awk '{print $9}' > filelist
for file in `cat $DIR/filelist`
do
recode -f UTF-8 $file
cat $file | col -b > imsy.txt
sort -u imsy.txt > $file
count=`expr $count + 1`
done
'쉘스크립트' 카테고리의 다른 글
파일 비교 스크립트 8 (0) | 2011.09.03 |
---|---|
날짜 표시 쉘 스크립트 (0) | 2011.08.05 |
파일 라인안에 앞에 내용 추가 / 맨뒤에 내용 추가 방법 (0) | 2011.06.17 |
파일비교 스크립트 5 (2) | 2010.05.25 |
파일들의 확장자만 변경 (0) | 2010.04.22 |
14. 지난 파일 압축하고 삭제하기 (2) | 2009.12.18 |
13. 파일 비교 스크립트 4 (2) | 2009.11.05 |
12. 파일 개수 비교해서 삭제하는 스크립트 (3) | 2009.10.21 |
11. SSH 접속 차단 스크립트 ( 5번 패스워드 틀리면 자동 차단) (2) | 2009.09.19 |
10. 파일비교 스크립트2 (3) | 2009.09.18 |
14. 지난 파일 압축하고 삭제하기
ㅋㅋ
#!/bin/bash ## Day and DIR configuration DATE=`date +%y%m%d` echo "date is $DATE" DIR=`echo $PWD` echo $DIR ## Decide period "A" is the range of the keeping days A=3 ## Tar and gzip compress find $DIR -mtime +$A > $DIR/imsy.txt tar -cvf $DATE.tar `find $PWD -mtime +$A` gzip $DATE.tar ## remove old files cat $PWD/imsy.txt | sed -n '/txt/p' > $PWD/imsy2.txt cat $PWD/imsy2.txt > $PWD/imsy.txt for B in `cat $PWD/imsy.txt` do echo $B # rm -rf $PWD/$B done
우선 이 스크립트의 기능은 특정 디렉토리안에 쌓이는 파일들이 계속 있을 경우
특정날짜만큼만 디렉토리에 그대로 두고
예를 들어 3 일이 지난 파일들은 모두 tar.gz 로 압축을 하고 나서
압축된 파일들은 지워버림.ㅋㅋ
find ${DIR} -type f -mtime +7 | xargs rm -f 이건??
'쉘스크립트' 카테고리의 다른 글
날짜 표시 쉘 스크립트 (0) | 2011.08.05 |
---|---|
파일 라인안에 앞에 내용 추가 / 맨뒤에 내용 추가 방법 (0) | 2011.06.17 |
파일비교 스크립트 5 (2) | 2010.05.25 |
파일들의 확장자만 변경 (0) | 2010.04.22 |
15. 텍스트 파일 포맷 변경 (2) | 2009.12.22 |
13. 파일 비교 스크립트 4 (2) | 2009.11.05 |
12. 파일 개수 비교해서 삭제하는 스크립트 (3) | 2009.10.21 |
11. SSH 접속 차단 스크립트 ( 5번 패스워드 틀리면 자동 차단) (2) | 2009.09.19 |
10. 파일비교 스크립트2 (3) | 2009.09.18 |
9. 여러 파일 하나의 txt 파일로 합치기 스크립트 (3) | 2009.09.10 |
13. 파일 비교 스크립트 4
우선 원본 파일 변경되므로 원본파일은 다른 이름으로 변경시켜 놓는다.
#!/bin/bash dir=$PWD count=0 cp $dir/a.txt $dir/a.txt_org for mdn in `cat $dir/b.txt | awk -F, '{print $1}'` do sed -e "/"$mdn"/d" $dir/a.txt > $dir/imsy.txt cat $dir/imsy.txt > $dir/a.txt count=`expr $count + 1` done echo "count is =" $count rm $dir/imsy.txt작업할 디렉토리 지정
반복문이 몇번 실행되었는지 체크하기 위한 count 변수 지정
원본 a.txt 파일을 a.txt_org 으로 백업한다.
(2) for mdn in `cat /home/bjh/homepcssn/test/b.txt | awk -F, '{print $1}'`
for 반복문을 사용
mdn 이란 변수에 b.txt 파일에서 숫자가 있는 필드만 awk 로 골라내어서 for 문을 사용해 차례로 입력하도록 한다
( 나중에는 cat 부분만 변경해서 사용 / 숫자만 있는 파일이면 cat 만 써도 됨 )
awk 에서 -F 옵션은 구분자를 지정할때 사용 ( 지정하지 않으면 빈칸으로 필드 구분 )
즉 쉼표(,) 로 구분했을때 첫번째 필드가 숫자가 되기 때문에 사용
여기서 $mdn 이란 변수에는 숫자(전화번호) 만 들어간다
(3) sed -e "/"$mdn"/d" $dir/aa.txt > $dir/imsy.txt
변수 mdn이 포함된 라인만 지운 나머지 모든 라인을 임시파일 imsy.txt 파일에 저장한다.
(4) cat imsy.txt > a.txt
임시파일을 원본 a.txt 에 덮어쓴다
이때 첫번재 mdn 값을 제외한 모든 라인이 a.txt 에 덮어쓴다.
(5) count=`expr $count + 1`
반복문이 1번 반복될때마다 count 변수는 하나씩 증가한다.
(6) done
mdn 변수의 개수만큼 돌아가고 나서 반복문 종료
(7) echo "count is =" $count
반복문이 몇번 실행되었는지 확인
즉 mdn 변수가 몇번 변했는지도 알 수 있다.
즉 b.txt 에서 숫자가 몇라인이 들어있는지 알 수 있다
(8) rm $dir/imsy.txt
임시파일 삭제
최종 파일 비교 스크립트 -> http://darkrang.tistory.com/219
'쉘스크립트' 카테고리의 다른 글
파일 라인안에 앞에 내용 추가 / 맨뒤에 내용 추가 방법 (0) | 2011.06.17 |
---|---|
파일비교 스크립트 5 (2) | 2010.05.25 |
파일들의 확장자만 변경 (0) | 2010.04.22 |
15. 텍스트 파일 포맷 변경 (2) | 2009.12.22 |
14. 지난 파일 압축하고 삭제하기 (2) | 2009.12.18 |
12. 파일 개수 비교해서 삭제하는 스크립트 (3) | 2009.10.21 |
11. SSH 접속 차단 스크립트 ( 5번 패스워드 틀리면 자동 차단) (2) | 2009.09.19 |
10. 파일비교 스크립트2 (3) | 2009.09.18 |
9. 여러 파일 하나의 txt 파일로 합치기 스크립트 (3) | 2009.09.10 |
8. 파일 내용 비교1 (3) | 2009.09.10 |
12. 파일 개수 비교해서 삭제하는 스크립트
이상이 되면 예전 파일 부터 삭제하는 스크립트
DIR=$PWD
ls -l | grep PFX_COUNT | wc -l > A.txt
A=`cat $DIR/A.txt`
echo $A
if [ $A -lt 3 ]
then
echo "Count is low"
else
echo "Count is high"
ls -lt | grep PFX_COUNT > $DIR/imsy.txt
sed '1,3d' $DIR/imsy.txt | awk '{print $9}' > $DIR/imsy2.txt
cat $DIR/imsy2.txt
for test in `cat $DIR/imsy2.txt`
do
rm -rf $test
done
fi
rm -rf $DIR/imsy.txt
rm -rf $DIR/imsy2.txt
rm -rf $DIR/A.txt
(1) ls -l | grep PFX_COUNT | wc -l > A.txt
DIR 위치에 있는 파일들 중에서 PFX_COUNT 란 이름을 가진 파일들의 개수를 A.txt 에 저장
(2) A=`cat $DIR/A.txt`
A라는 변수에 그 개수를 저장
(3) if [ $A -lt 3 ]
만약 그 값이 3 보다 작다면 바로 아래 라인으로 이동해서 그 다음 명령 수행
만약 3보다 크면 else 밑의 명령들을 수행
(4) ls -lt | grep PFX_COUNT > $DIR/imsy.txt
sed '1,3d' $DIR/imsy.txt | awk '{print $9}' > $DIR/imsy2.txt
cat $DIR/imsy2.txt
PFX_COUNT 가 포함된 파일의 리스트를 imsy2.txt 에 저장
(5) for test in `cat $DIR/imsy2.txt`
do
rm -rf $test
done
for 문으로 돌리면서 삭제해준다.
(6) 기타 임시txt 파일들을 삭제함
'쉘스크립트' 카테고리의 다른 글
파일비교 스크립트 5 (2) | 2010.05.25 |
---|---|
파일들의 확장자만 변경 (0) | 2010.04.22 |
15. 텍스트 파일 포맷 변경 (2) | 2009.12.22 |
14. 지난 파일 압축하고 삭제하기 (2) | 2009.12.18 |
13. 파일 비교 스크립트 4 (2) | 2009.11.05 |
11. SSH 접속 차단 스크립트 ( 5번 패스워드 틀리면 자동 차단) (2) | 2009.09.19 |
10. 파일비교 스크립트2 (3) | 2009.09.18 |
9. 여러 파일 하나의 txt 파일로 합치기 스크립트 (3) | 2009.09.10 |
8. 파일 내용 비교1 (3) | 2009.09.10 |
스크립트 문제 (0) | 2009.06.01 |
10. 파일비교 스크립트2
A 라는 파일은 원본 파일로 데이터량이 많다
B 라는 파일은 A보단 양이 적다.
원하는 것은 A 에서 B 를 제외한 나머지의 데이터를 알고 싶다.
A=/user1/si/z_bjh/a.txt
B=/user1/si/z_bjh/b.txt
sdiff $A $B > c.txt
sed -n "/</p" c.txt | awk '{print $1}' > d.txt
sdiff 라는 것은 아래와 같이 동작한다.
sdiff file1 file2
sdiff 명령은 두 파일을 각각 한 줄씩 서로 비교해 가면서, 두 파일의 내용을 모두 출력합니다.
그 줄이 서로 다른 경우는 | 기호, file1에만 있는 경우는 < 기호, file2에만 있는 경우는 > 기호, 두 줄이 서로 똑 같은 경우는 아무것도 없습니다
예를 들어 a.txt 에 1부터 8까지 넣고 b.txt 에 1부터 4까지 넣었다면 아래와 같이 나온다.
오른쪽의 < 표시는 a.txt 에는 존재하고 b.txt 에는 존재하지 않는 것이다.
1 1
2 2
3 3
4 4
5 <
6 <
7 <
8 <
최종 파일 비교 스크립트 -> http://darkrang.tistory.com/219
'쉘스크립트' 카테고리의 다른 글
15. 텍스트 파일 포맷 변경 (2) | 2009.12.22 |
---|---|
14. 지난 파일 압축하고 삭제하기 (2) | 2009.12.18 |
13. 파일 비교 스크립트 4 (2) | 2009.11.05 |
12. 파일 개수 비교해서 삭제하는 스크립트 (3) | 2009.10.21 |
11. SSH 접속 차단 스크립트 ( 5번 패스워드 틀리면 자동 차단) (2) | 2009.09.19 |
9. 여러 파일 하나의 txt 파일로 합치기 스크립트 (3) | 2009.09.10 |
8. 파일 내용 비교1 (3) | 2009.09.10 |
스크립트 문제 (0) | 2009.06.01 |
7. sed 란? (2) | 2009.03.31 |
5. 날짜표시 (date) (0) | 2009.03.05 |
9. 여러 파일 하나의 txt 파일로 합치기 스크립트
DIR="/user1/si/z_bjh/icms_data/"
A=`ls -l $DIR | awk '{print $9}'`
for i in `echo $A`
do
cat $DIR$i >> /user1/si/z_bjh/aa.txt
done
#echo "===== DONE !! ======="
먼저 하나로 합칠 여러개의 파일들을 하나의 디렉토리에 넣는다
/user1/si/z_bjh/icms_data 에 모두 넣고
변수 A 에 ls -l $DIR | awk '{print $9}' 명령을 통해서 파일명만 추출해서 넣음
for 반복문으로
변수 i 에다가 변수A 가 계속적으로 반복되면서 하나씩 차례로 파일명을 넣을 것이고
cat $DIR$i >> /user1/si/z_bjh/aa.txt
aa.txt 라는 파일에 리다이렉트로 모든 파일의 내용을 계속적으로 넣는다.
------------
가장 쉬운 방법은 a.txt 와 b.txt 라는 두 개의 파일 있을 때
다음과 같이 리다이렉트를 사용해서 두개를 하나의 파일로 합치면 됩니다.
cat a.txt >> imsy.txt
cat b.txt >> imsy.txt
그런 다음에 중복된 것을 제거 하기 위해서 sort -u imsy.txt > imsy2.txt 라고 하면
마지막에 imsy2.txt 라는 파일 최종적으로 나오게 된다 ^^
참고로 필드별로 sort 하는 방법은 이전 글에 적어놓았음 --> [내가쓰는리눅스 강좌] - 25. sort 명령어
'쉘스크립트' 카테고리의 다른 글
14. 지난 파일 압축하고 삭제하기 (2) | 2009.12.18 |
---|---|
13. 파일 비교 스크립트 4 (2) | 2009.11.05 |
12. 파일 개수 비교해서 삭제하는 스크립트 (3) | 2009.10.21 |
11. SSH 접속 차단 스크립트 ( 5번 패스워드 틀리면 자동 차단) (2) | 2009.09.19 |
10. 파일비교 스크립트2 (3) | 2009.09.18 |
8. 파일 내용 비교1 (3) | 2009.09.10 |
스크립트 문제 (0) | 2009.06.01 |
7. sed 란? (2) | 2009.03.31 |
5. 날짜표시 (date) (0) | 2009.03.05 |
4. 기본 루프문 (while) (0) | 2009.03.04 |