연산자 | 의미 |
---|---|
. | 1문자 일치 |
? | 존재하는 문자가 있을 수도, 없을 수도 있음 |
* | 0번 혹은 그 이상 반복 |
^ | 시작과 일치 [^abc]때는 부정 |
$ | 끝과 일치 |
+ | 1번 이상 반복 |
[] | []사이 존재하는 문자들 중 하나 |
[A-Z] | 범위, 대문자 전체 |
{n} | 정확히 n번 일치 |
{n,m} | 적어도 n번 m번을 넘지 않음, n~m 사이 |
{n,} | n번 또는 그 이상 |
\b | 단어 끝의 공백 문자열 |
\B | 끝이 아닌 곳에서 공백 문자열 |
\< | 시작 단어 문자열 |
> | 단어 끝에서 문자열 |
파싱 | 문자열을 의미 있는 토근으로 분리하고 이를 파스트리로 만듬 |
sed [옵션][파일]
변경 하기
sed 's/ace/ACE/g' /etc/passwd
sed 's/ace/ACE/gw /yes' /etc/passwd - 변경된 라인만 저장 저장
삭제하기
sed '/^$/d' /etc/services | cat -n - 빈줄 삭제 (^$ = 빈줄)
root@kwc
17:37:07:~# sed -n '/root/p' u
root:x:0:0:root:/root:/bin/bash
root@kwc
17:37:18:~# sed '/root/!d' u - 같은 의미
root:x:0:0:root:/root:/bin/bash
awk '패턴{action}' "파일명"
cp /etc/passwd aa
root@kwc
16:34:21:~# awk -F: '{print $1, $3}' aa | tail -5 - /etc/passwd에서 첫번쨰 필트 세번쨰 필트 구분하여 모두 출력
usbmux 113
j 1000
lxd 999
mysql 114
tomcat 998
root@kwc
16:34:26:~# awk -F: '{print $1, $6}' aa | tail -5
- /etc/passwd에서 첫번쨰 필트 여섯번쨰 필트 구분하여 모두 출력
usbmux /var/lib/usbmux
j /home/j
lxd /var/snap/lxd/common/lxd
mysql /nonexistent
tomcat /var/lib/tomcat
root@kwc
16:35:55:~# cat > k1
손흥민
이 강인
김덕배
송살라
이아자르
root@kwc
16:36:30:~#
root@kwc
16:36:31:~# cat > k2
100
200
300
400
500
root@kwc
16:36:49:~# cat > k3
20
23
35
56
88
root@kwc
16:37:19:~# nl k1
1 손흥민
2 이강인
3 김덕배
4 송살라
5 이아자르
root@kwc
16:37:21:~# nl k2
1 100
2 200
3 300
4 400
5 500
root@kwc
16:37:26:~# nl k3
1 20
2 23
3 35
4 56
5 88
root@kwc
16:41:20:~# awk -F' ' '{print $1, '\n',$2, '\t' $3}' kk
손흥민 100 20
이강인 200 23
김덕배 300 35
송살라 400 56
이아자르 500 88
root@kwc
16:42:11:~# sqlite3
SQLite version 3.37.2 2022-01-06 13:25:41
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> create table yy(name, asset, age);
sqlite> .import kk yy
sqlite> .head on
sqlite> .mode col
sqlite> SELECT * FROM yy;
name asset age
---- ----- ---
손흥민 100 20
이강인 200 23
김덕배 300 35
송살라 400 56
이아자르 500 88
root@kwc
16:46:23:~# vi kk
1 손흥민|100|20
2 이강인|200|23
3 김덕배|300|35
4 송살라|400|56
5 이아자르|500| 88
~
root@kwc
17:09:44:~# awk -F'|' '{print $1, $2, $3}' kk
손흥민 100 20
이강인 200 23
김덕배 300 35
송살라 400 56
이아자르 500 88
root@kwc
17:10:50:~# awk -F'|' '$2 > 300' kk - '|'로 구별하며 두번쨰 필드가 300 이상 모두 출력
송살라|400|56
이아자르|500|88
root@kwc
17:14:02:~# df
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 202324 1160 201164 1% /run
/dev/sda4 12278920 4805680 6827712 42% /
tmpfs 1011600 0 1011600 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
/dev/sda2 996780 132944 795024 15% /boot
/dev/sda5 5074592 48 4796016 1% /home
/dev/sda6 10215700 24 9675160 1% /data
tmpfs 202320 4 202316 1% /run/user/1000
tmpfs 202320 4 202316 1% /run/user/0
root@kwc
17:14:19:~# \df | awk '$4 > 800000' - 파일 디스트 용량중 가용량이 80000이상 출력
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda4 12278920 4805680 6827712 42% /
tmpfs 1011600 0 1011600 0% /dev/shm
/dev/sda5 5074592 48 4796016 1% /home
/dev/sda6 10215700 24 9675160 1% /data
root@kwc
17:15:37:~# find / -size +100M 2>/dev/null
/boot/initrd.img-5.15.0-71-generic
/proc/kcore - proc : process
/usr/lib/x86_64-linux-gnu/libLLVM-15.so.1
/usr/lib/jvm/java-11-openjdk-amd64/lib/modules
/usr/lib/jvm/java-11-openjdk-amd64/jmods/java.base.jmod
/var/lib/snapd/seed/snaps/lxd_24322.snap
/var/lib/snapd/snaps/lxd_24322.snap
/var/cache/apt/archives/openjdk-11-jdk-headless_11.0.18+10-0ubuntu1~22.04_amd64.deb