워드나 엑셀에 붙였더니 너무 많은 공백 라인들

파이썬으로 한번에 빈줄 삭제하기

 

▣ 만든 취지

인터넷을 보다가 괜찮은 데이터를 찾아서 사용하려고 텍스트 파일로 복사를 했어요.

막상 엑셀이나 워드에 옮겨서 정리를 하려고 보니 

빈 줄이 너무 많이 포함되어 있어서 

수동으로 삭제하려고 보니 너무 번거러워서 

간단히 파이썬으로 삭제하는 코드로 빠르게 처리했어요.

 

▣ 파이썬  코드 :  빈 줄 삭제하기

텍스트 파일에서 공백으로 된 줄만 지우기
import os
proj_dir="C:\Python37\delblank"
filename1=os.path.join(proj_dir,"blanklines.txt")  #  입력 파일
filename2=os.path.join(proj_dir,"noblankline.txt")     #  결과 파일
 
lines = [ ]
 
 
with open(filename1, "r", encoding='utf-8') as bf:
    for line in bf:
        if not line.isspace():
            lines.append(line.lstrip())  #왼쪽 정렬, 그냥 공백만 삭제하려면 .lstrip() 삭제할 것
 
 
with open(filename2, "w") as df:
    for line in lines:
        df.write(line)
        print(line)
 
print("blank lines are deleted")

- 작업 디렉토리와 파일명만 바꾸어서 사용하면 됩니다. 

 

수 많은 공백줄 한 번에 삭제해서 

수작업할 때 시간 줄일 수 있어요.

반응형

'아는 것이 힘 > LINUX' 카테고리의 다른 글

[서버 관리]파일 개수 출력 명령문  (0) 2023.06.08
[리눅스] awk 알아보기  (0) 2023.04.08
[Putty] 한글깨짐  (0) 2020.10.21
[Linux]RPM  (0) 2020.10.05
[Linux] RAID  (0) 2020.10.05

리눅스에서 하위 디렉토리별 파일 수 출력하기

관리하는 리눅스 서버의 디렉토리별로 개수를 카운트할 일이 생겼어요.

예를 들면  로그 디렉토리에 있는 파일이 얼마인지 보고하라고 합니다.

처음에는 tree 명령어 옵션이 있나 검색하다가 시간만 낭비하다가 

결국 아래 명령어 조합으로 출력했습니다. 

◈ 디렉토리 파일 개수 출력 명령어

for x in `ls`; do echo $x: `find $x -type f| wc -l`; done

 ※ 명령어 속의 특수문자는 따옴표 아니고 물결표 아래 Grave(`)에요.

 

위의 명령어로 아래와 같은 디렉토리에서 실행해보았어요.

[honggil]# tree
.
|-- dir_01
|   |-- dir_01_01
|   |   `-- text3.txt
|   |-- text1.txt
|   |-- text2.txt
|   `-- text3.txt
|-- dir_02
|   |-- text1.txt
|   |-- text2.txt
|   `-- text3.txt
|-- dir_03
`-- pydir
    `-- test.py

5 directories, 8 files

 

명령어 실행 결과는 다음과 같아요.

[honggil]# for x in `ls`; do echo $x: `find $x -type f| wc -l`; done
dir_01: 4
dir_02: 3
dir_03: 0
pydir: 1

 

관리하는 서버의 파일 개수가 궁금하다면 참고하세요.

반응형

'아는 것이 힘 > LINUX' 카테고리의 다른 글

[Python] 텍스트 파일에서 공백 줄(blank line) 삭제하기  (0) 2023.07.10
[리눅스] awk 알아보기  (0) 2023.04.08
[Putty] 한글깨짐  (0) 2020.10.21
[Linux]RPM  (0) 2020.10.05
[Linux] RAID  (0) 2020.10.05

AWK는 다양한 내장 함수와 변수를 제공하며, 이를 활용하여 텍스트 파일을 처리할 수 있습니다.

아래는 AWK의 주요 내장 함수와 변수와 그 사용법에 대한 설명입니다.

1. 내장 변수

  • NF: 현재 라인의 필드 수를 나타냅니다. 예시: NF == 3 {print $1}
  • NR: 현재 라인의 번호를 나타냅니다. 예시: NR == 10 {print $0}
  • FS: 필드 구분자를 설정합니다. 예시: BEGIN {FS=","}
  • RS: 레코드(라인) 구분자를 설정합니다. 예시: BEGIN {RS=":"}

 2. 내장함수 

  • length: 문자열의 길이를 반환합니다. 예시: length($1)
  • substr: 문자열의 일부분을 추출합니다. 예시: substr($1, 1, 3)
  • split: 문자열을 구분자를 기준으로 나누어 배열로 반환합니다. 예시: split($1, arr, ":")
  • index: 문자열에서 특정 문자열의 위치를 반환합니다. 예시: index($1, "abc")
  • match: 문자열에서 정규식 패턴과 일치하는 첫번째 위치를 반환합니다. 예시: match($1, /[0-9]+/)

간단하게 아래와 같은 file.txt 파일이 있다고 할 때

apple,banana,orange
grape,kiwi,melon

첫번째 필드의 길이는 다음과 같은 스크립트로 출력할 수 있다. 

awk -F, '{print length($1)}' file.txt

 

로그 파일과 같은 텍스트 파일에서 특정 숫자의 빈도를 출력하는 예제를 알아 보면 다음 과 같다.

아래와 같은 파일이 주어진다면

123,456,789
234,567,890
345,678,901
456,789,012

다음  awk 스크립트로 각 숫자의 빈도를 출력한다. 

grep -o '[0-9]*' file.txt | awk '{for(i=1;i<=NF;i++) {if($i!="") count[$i]++}} END {for(num in count) {print num, count[num]}}'

1. grep -o '[0-9]*' file.txt: 정규식 [0-9]*를 이용하여 파일에서 숫자만 추출합니다.

2. awk '{for(i=1;i<=NF;i++) {if($i!="") count[$i]++}} END {for(num in count) {print num, count[num]}}': awk를 이용하여 각 숫자별 빈도를 출력합니다.

(1) for(i=1;i<=NF;i++) {if($i!="") count[$i]++}: 각 라인에서 숫자를 추출하여 배열 count에 저장합니다.

(2) END {for(num in count) {print num, count[num]}}': 모든 라인을 처리한 후, 배열 count의 각 항목에 대해 숫자와 빈도를 출력합니다.

반응형

'아는 것이 힘 > LINUX' 카테고리의 다른 글

[Python] 텍스트 파일에서 공백 줄(blank line) 삭제하기  (0) 2023.07.10
[서버 관리]파일 개수 출력 명령문  (0) 2023.06.08
[Putty] 한글깨짐  (0) 2020.10.21
[Linux]RPM  (0) 2020.10.05
[Linux] RAID  (0) 2020.10.05

https://ooz.co.kr/158

세번째 방법으로 해결됨

반응형

'아는 것이 힘 > LINUX' 카테고리의 다른 글

[서버 관리]파일 개수 출력 명령문  (0) 2023.06.08
[리눅스] awk 알아보기  (0) 2023.04.08
[Linux]RPM  (0) 2020.10.05
[Linux] RAID  (0) 2020.10.05
[리눅스] 패스워드 관리  (0) 2020.08.28

RPM 옵션과 예제

rpm -ivh gzip-1.3.12-19.316_4.x86_64.rpm (설치)

rpm -ivh http://mirror.centos.org/cnetos/6/os/x86_65/Packages/gzip-1.3.12-19.316_4.x86.64.rpm (url 설치)

rpm -Uvh my-pakage.rpm (업그레이드)

rpm -qa | less rpm -qi httpd (httpd 자세한 정보 확인)

rpm -qpi http (설치하기 전에 자세한 정보 출력)

rpm -qf 'which httpd' (파일로 패키지 정보 알아보기)

rpm -qdf 'which httpd' (문서 경로 확인)

rpm -ql httpd (설치 경로 보기)

rpm -qc httpd(설치 경로 보기)

반응형

'아는 것이 힘 > LINUX' 카테고리의 다른 글

[리눅스] awk 알아보기  (0) 2023.04.08
[Putty] 한글깨짐  (0) 2020.10.21
[Linux] RAID  (0) 2020.10.05
[리눅스] 패스워드 관리  (0) 2020.08.28
[SSH 설정] RSA 키 설정  (0) 2020.08.03


0 : striping
1 : mirroring ==> 1/2
2 : ECC
3 : Parity
4 : block striping w/ 1 disc parity ==> 병목현상
5 : block striping w/ parallel parity => 병목해소
6 : block striping w/ parallel 2차 parity==> 1/2
10: 1+0 ==>1/2

반응형

'아는 것이 힘 > LINUX' 카테고리의 다른 글

[Putty] 한글깨짐  (0) 2020.10.21
[Linux]RPM  (0) 2020.10.05
[리눅스] 패스워드 관리  (0) 2020.08.28
[SSH 설정] RSA 키 설정  (0) 2020.08.03
[강좌] 리눅스  (0) 2017.01.05

chage, passwd, usermod 옵션 비교

반응형

'아는 것이 힘 > LINUX' 카테고리의 다른 글

[Linux]RPM  (0) 2020.10.05
[Linux] RAID  (0) 2020.10.05
[SSH 설정] RSA 키 설정  (0) 2020.08.03
[강좌] 리눅스  (0) 2017.01.05
[LINUX] 주기적 명령어 실행  (0) 2017.01.03

https://www.cubrid.com/blog/3825015

반응형

'아는 것이 힘 > LINUX' 카테고리의 다른 글

[Linux] RAID  (0) 2020.10.05
[리눅스] 패스워드 관리  (0) 2020.08.28
[강좌] 리눅스  (0) 2017.01.05
[LINUX] 주기적 명령어 실행  (0) 2017.01.03
[LINUX]watch command  (0) 2015.02.16

리눅스 강좌
- 목차 구분되어 동영상으로 설명
https://opentutorials.org/course/2598

반응형

'아는 것이 힘 > LINUX' 카테고리의 다른 글

[리눅스] 패스워드 관리  (0) 2020.08.28
[SSH 설정] RSA 키 설정  (0) 2020.08.03
[LINUX] 주기적 명령어 실행  (0) 2017.01.03
[LINUX]watch command  (0) 2015.02.16
[LINUX]명령어 실행결과 정렬, 파일 내용 정렬  (0) 2015.02.15

리눅스에서 동일 명령어를 주기적으로 실행하는 명령어가 있다.


# watch -n1 "netstat -nap "

위의 명령어는 1초 주기로 netstat -nap 명령어를 실행한 결과를 화면에 보여준다.

반응형

'아는 것이 힘 > LINUX' 카테고리의 다른 글

[SSH 설정] RSA 키 설정  (0) 2020.08.03
[강좌] 리눅스  (0) 2017.01.05
[LINUX]watch command  (0) 2015.02.16
[LINUX]명령어 실행결과 정렬, 파일 내용 정렬  (0) 2015.02.15
[LINUX][Shell]Redirect & 파일 내용 지우기  (0) 2015.02.15

o watch
: 지정된 명령 재실행, 결과 스크린 출력
- 5초마다 /var/log/messages 출력
예) watch -n 5 tail /var/log/messages

반응형


o 명령어 실행 결과 정렬
- 명령어 실행
- 파이프로 전달
- sort 명령어로 정렬

예) [user1@local]$ du -h * | sort -nr

* sort -nr
: 숫자(numeric) 기준 내림차순(reverse) 정렬

o 텍스트 파일 정렬
- sort 명령어 실행
- 입력 파일 지정(<)
예) [user1@local]$sort < textfile

반응형

'아는 것이 힘 > LINUX' 카테고리의 다른 글

[LINUX] 주기적 명령어 실행  (0) 2017.01.03
[LINUX]watch command  (0) 2015.02.16
[LINUX][Shell]Redirect & 파일 내용 지우기  (0) 2015.02.15
[Debug]add2line  (0) 2014.12.02
[grep]특정 문자열 제외하기  (0) 2014.11.17


Shell로 처리한 결과를 파일에 저장하기 위해서 Redirect 명령어(>, right bracket)을 사용한다.

예를 들어. ls 결과를 파일로 저장
[root@localhost]ls > ls.txt

이미 있는 텍스트 파일에 처리결과를 더 추가할 때는 redirect 명령어(>>)를 2번 적는다.
[root@localhost]ls -l >> ls.txt

만약에 ls.txt에 저장된 text를 모두 지우고 싶다면 아래와 같이 한다.
[root@localhost]cat /dev/null >ls.txt

혹은

[root@localhost]echo " " >ls.txt

반응형

'아는 것이 힘 > LINUX' 카테고리의 다른 글

[LINUX] 주기적 명령어 실행  (0) 2017.01.03
[LINUX]watch command  (0) 2015.02.16
[LINUX]명령어 실행결과 정렬, 파일 내용 정렬  (0) 2015.02.15
[Debug]add2line  (0) 2014.12.02
[grep]특정 문자열 제외하기  (0) 2014.11.17
add2line 이용하기

addr2line 은 디버그 정보를 이용해서 파일명과 행 번호를 얻는다.  이때문에 프로그램은 미리 디버그 정보를 포함하도록 컴파일해야 한다.
gcc에서는  -g 옵션을 사용한다.

  1 #include <stdio.h>
  2 
  3 void func(void)
  4 {
  5     printf("func call\n");
  6 }
  7 
  8 int main(void)
  9 {
 10     printf(" func addr %p\n", func);
 11 }
 12 
 13 

컴파일은 아래와 같이 한다.
root@boggle70-desktop:tmp# gcc -g addr2line.c 

실행을 한다.
root@boggle70-desktop:tmp# ./a.out 
 func addr 0x8048414

먼저 헬프를 보자
root@boggle70-desktop:tmp# addr2line -help
Usage: addr2line [option(s)] [addr(s)]
 Convert addresses into line number/file name pairs.
 If no addresses are specified on the command line, they will be read from stdin
 The options are:
  @<file>                Read options from <file>
  -a --addresses         Show addresses
  -b --target=<bfdname>  Set the binary file format
  -e --exe=<executable>  Set the input file name (default is a.out)
  -i --inlines           Unwind inlined functions
  -j --section=<name>    Read section-relative offsets instead of addresses
  -p --pretty-print      Make the output easier to read for humans
  -s --basenames         Strip directory names
  -f --functions         Show function names
  -C --demangle[=style]  Demangle function names
  -h --help              Display this information
  -v --version           Display the program's version

addr2line: supported targets: elf32-i386 a.out-i386-linux pei-i386 elf32-little elf32-big srec symbolsrec verilog tekhex binary ihex trad-core

가장 간단한 예제를 살펴보자
root@boggle70-desktop:tmp# addr2line -e a.out 0x8048414
/root/tmp/addr2line.c:4
input file 과 주소를 주니 실행라인이 정확히 출력된다.
함수의 이름도 출력할수 있다.
root@boggle70-desktop:tmp# addr2line -f -e a.out 0x8048414
func
/root/tmp/addr2line.c:4

addr2line 역시 BFD 라이브러리를 이용해서 디버그 정보를 구한다.
addr2line 은 주소로부터 파일명과 행 번호를 얻을 수 있다.



반응형

grep 출력 결과에서 특정 문자열 제외하기

방법은 2가지이다. -v 혹은 -Ev 옵션을 사용한다.

1. option : v
- 설명 : 특정 문자열이 포함된 것 제외하기
- 예시
grep Hello a |grep -v apple|grep -v orange| grep -v banana



2. option : -EV
- 설명 : 여러 문자열이 포함된 것 제외하기
- 예시
grep Hello a |grep -Ev 'apple|orange|banana'

반응형

+ Recent posts