728x90

sed 명령어는 찾은 문자열을 바꿀수 있는 명령어이다.

 

[sed 스크립트]

 

sed 스크립트는 어떤 범위의 어떤 문자열이 포함된 라인을 추출하던지

특정 문자열을 원하는 다른 문자열로 변경할 것인지를 명시하는일입니다.

 

여기서 어떤 범위는 어드레스 address 에 해당하며,

특정 문자열을 추출하거나 변경하는 일 명령어 command 라고합니다.

 

어드레스는 옵션처럼 생략될 수도 있으며,

어드레스가 생략되면 sed는 대상 파일 전체에서 특정 문자열을 찾고 변경합니다.

 

[어드레스]

 

어드레스는 대상 파일에서 어떤 범위에 해당합니다. 그리고,

어드레스가 정의되지 않았을 경우에는

대상 파일 전체에서 특정 문자열을 찾거나 명령어를 수행합니다.

 

어드레스는 특정 라인일수도 있고, 정규 표현식과 같은 패턴일수도 있습니다.

 

"특정 라인부터 특정 패턴이 포함된 라인까지이거나"

"특정 패턴이 포함된 라인부터 명시한 라인 수 까지" 일수도 있습니다.

 

다음은 이런 어드레스 종류를 정리한 것입니다.

옵션 설명
number 명시된 숫자에 해당하는 라인 번호일 경우 다음 명령어를 수행함
number~step 명시된 숫자는 해당하는 라인부터 명시한 단계만큼 해당 라인을 스킵한 다음
라인일 경우 다음 명령어를 수행함
$ 파일의 마지막 라인일 경우 다음 명령어를 수행함
/regexp/ 명시한 정규표현식과 일치하는 라인일 경우 다음 명령어를 수행함
\cregexpc 명시한 정규 표현식과 일치하는 라인일 경우 다음 명령어를 수행함
0,addr2 1번째 라인부터 addr2가 포함된 라인까지가 범위이며, addr2는 정규 표현식이여함
addr1,+N addr1이 포함된 라인부터 +N라인까지가 범위이며, addr1은 정규 표현식이여야 하며,
N은 숫자여야함
addr1,~N addr1이 포함된 라인을 기준으로 N라인까지가 범위이며, addr1은 정규 표현식이여야 하며,
N은 숫자여야함

# sed 테스트를 위한 샘플 파일 내용

cat hosts

 

# This is Sed Sample File
# We will test to replace from a-text to b-text.
# It was created by NaleeJang.

127.0.0.1   localhost

# Development
192.168.100.250 git.example.com
192.168.100.10  servera.example.com
192.168.100.11  dev.example.com

# Test

172.10.2.12 test1.example.com
172.10.2.13 test2.example.com

# Production
122.10.10.31 service.example.com
122.10.10.32 service1.example.com
122.10.10.33 service2.example.com

 

---------------------------------------------------------------------------------------------------------

옵션 -n : 대상 파일 내용을 출력하지않겠다.

숫자 5 : 대상 파일의 5번째 라인

p : print의 약자로 현재 어드레스에 의해 정의된 범위의 내용을 출력하라는 의미

 

# 5번째 줄을 출력함

sed -n '5 p' hosts

ㄴ 127.0.0.1 localhost

 

'1~3' : 1번째 라인부터 시작하여 3칸 라인을 건너뛰고 다음 라인을 읽으라는 뜻

= : 현재 읽어들인 라인의 라인 번호를 출력하라

# 1번째 라인부터 시작하여 3라인마다 해당 라인 번호 출력

sed -n '1~3 =' hosts

 

$ : 파일의 마지막 라인

'$ =' : 마지막 라인의 라인번호를 출력하라

'$ p' : 마지막 라인의 내용을 출력하라

 

# 파일의 마지막 라인 번호 출력

sed -n '$ =' hosts

 

# 파일의 마지막 라인 문자열 출력

sed -n '$ p' hosts

 

# test와 숫자로 시작하는 문자열이 포함된 라인 출력

sed -n '/test[0-9].*/ p' hosts

 

\cregexpc : 명시한 정규표현식과 일치하는 라인일 경우 다음 명령어를 수행

정규표현식을 \c ~ c 사이에 표현

sed -n '\ctest[0-9].*c p' hosts

 

어드레스 0,addr2 : 첫 번째 라인부터 addr2가 포함된 라인까지 대상범위가 됨

 

#1번째 라인부터 # Devel로 시작하는 문자열이 있는 라인까지 출력

sed -n '0,/^# Devel*/ p' hosts

 

# Devel로 시작하는 라인부터 아래 3줄까지 출력

sed -n '/^# Devel*/,+3 p' hosts

 

# Devel이 포함된 라인을 기준으로 3번째 라인까지 출력

sed -n '/^# Devel*/,~3 p' hosts

 

[ 명령어 ]

 

sed 명령어에는 어드레스를 필요로 하지 않거나,

숫자나 정규 표현식과 같은 단일 어드레스를 사용할 때 사용할 수 있는 명령어와

어드레스 범위를 허용하는 명령어들이 있습니다.

 

어드레스를 필요로 하지 않는 명령어는 라벨, 주석, 블록이 있으며,

단일 어드레스를 사용할 수 있는 명령어와 어드레스 범위를 허용하는

명령어에는 주로 문자열 추가, 삭제, 변경, 파일 저장과 같은 명령어들이 있습니다.

 

그럼 지금부터 sed와 함께 사용할 수 있는 다양한 명령어들을 알아보겠습니다.

 

0 or 1 어드레스 명령어( Zero- or One- address commands )

어드레스 범위 명령여( Commands which accept address ranges )

 

( 0 or 1 어드레스 명령어 )

 

0 어드레스 명령어에는 라벨, 주석, 블록과 같이 파일 내용에 아무런 영향을 주지 않는

명령어와 문자열 추가, 삽입, 스크립트 종료, 파일 내용 추가와 같은

명령어들로 어드레스가 필요한 명령어가 있습니다.

 

다음은 이런 명령어들을 정리한 것입니다.

 

옵션 설명
:label 라벨
#comment 주석
{ ... } 블록
= 현재 라인번호 출력
a \ text 문자열 추가
i \ text 문자열 삽입
q sed 스크립트 실행 종료
Q sed 스크립트 실행 종료
r 파일명 파일 내용 추가
R 파일명 파일의 첫 라인 추가

 

/# Test/,+3 은 어드레스 범위로 # Test가 포함된 라인부터 3번째 라인까지가 대상범위이며,

해당 범위 명령어들을 중괄호{}로 블록화하였음

현재라인번호를 출력하는 = 명령어

#으로 시작하는 주석

콜론:으로 시작하는 라벨이 있습니다.

 

# Test로 시작하는 라인부터 +3라인까지의 라인 번호 출력

 

cat sed-script.txt

/# Test/,+3 {

=

# first label

:label1

}

 

# 파일을 이용하여 sed 실행

 

sed -n -f sed-script.txt hosts

 

명령어 a \text는 해당 어드레스 다음 라인에 명시한 문자열을 추가합니다.

다음 예제는 172.10.2.13이 있는 라인 다음에 172.10.2.14 test3.example.com을 추가한 후 출력하는 예입니다.

sed에서 사용되는 명령어들은 한 라인에 한 명령어만 사용할 수 있습니다. 따라서

여러 줄의 명령어를 사용하려면 다음 예제와 같이 중괄호{}로 블록을 만들어주어야 합니다.

 

# 172.10.2.13 이 있는 다음 라인에 새 주소 172.10.2.14 추가

sed -n '/172.10.2.13/ { a \

172.10.2.14 test3.example.com

p }' hosts

 

i \text 명령어는 앞서 살펴보면 a \text와 유사하지만, 해당 어드레스 이전 라인에 명시한 문자열을 삽입합니다.

다음 에제는 172.10.13이 있는 라인 위에 172.10.2.14 test3.example.com을 삽입하고 수정된 내용을 출력합니다.

 

# 172.10.2.3 에 있는 라인 위에 새 주소 172.10.2.14 추가

 

sed -n '/172.10.2.3/ { i \

172.10.2.14 test3.example.com

p }' hosts

 

( q 명령어를 사용할 경우 )

q는 수행 중이던 스크립트를 종료할 때 사용하는 명령어입니다.

다음 예제를 보면 a 명령어에 의해 추가할 17.10.2.14 test3.example.com을 추가하지 않은채

추가할 테스트만 출력하고 sed 실행을 종료합니다.

 

# test3.example.com을 출력하지 않고 종료

sed -n '/172.10.2.13/ { a \

172.10.2.14 test3.exmaple.com

q

p } ' hosts

 

( Q 명령어를 사용할 경우 )

앞서 살펴본 예제에서 추가할 텍스트만 출력하고 sed 실행을 종료했다면, Q 명령어는 출력조차하지 않고

바로 sed 수행을 종료합니다.

 

# 아무것도 출력하지 않고 종료

sed -n '/172.10.2.13/ { a \

172.10.2.14 test3example.com

Q

p }' hosts

 

( r 파일명 명령어를 사용할 경우 )

r 파일명 명령어는 앞에서 명시한 해당 어드레스 뒤에 명시한 파일로부터 해당 내용을 읽어 해당 내용을 추가합니다.

 

다음 예제에서는 추가할 IP 주소와 호스트명을 sed-read.txt에 저장합니다.

 

그리고, sed를 이용해 단일 어드레스인 172.10.2.13 뒤에

r sed-read.txt를 선언하고 해당 내용을 출력하도록 하였습니다.

 

cat sed-read.txt

172.10.2.14 test3.example.com

172.10.2.15 test4.example.com

 

# 172.10.2.13 라인 뒤에 파일에 모든 새 IP 추가

sed -n '/172.10.2.13/ { r sed-read.txt

p }' hosts

 

( R 파일명 명령어를 사용할 경우 )

R 파일명 명령어는 r 파일명과는 다르게 해당 파일의 첫 번째 라인만 읽어 추가합니다. 다음 예제를 보면, 앞서 살펴본 예제와 동일하지만 명령어가 r에서 R로 바뀜으로 인해 해당 파일의 첫번째 라인인 172.10.2.14 test3.example.com만 추가된 것을 확인할 수 있습니다.

 

# 172.10.2.13 라인 뒤에 파일의 첫 번째 새 IP만 추가

sed -n '/172.10.2.13/ { R sed-read.txt

p }' hosts

 

[ 어드레스 범위 명령어 ]

 

어드레스 범위는 특정 라인부터 특정 라인까지를 의미하며,

이런 어드레스를 허용하는 명령어들에는 문자열 변경, 삭제, 출력, 라벨 분기와 같은 명령어들이 있습니다.

 

다음은 어드레스 범위 명령어 (Commands which accept address ranges)를 정리한 것입니다.

 

옵션 설명
b label 라벨을 호출함
c \ text 앞에서 명시된 패턴이 포함된 라인을 text 문자열로 변경
d D 앞에서 명시된 패턴 삭제
h H 패턴 공간을 홀드 공간에 복사/추가
g G 홀드 공간을 패턴 공간에 복사/추가
I 입력된 데이터의 현재 라인 출력
I width 명시한 너비에 맞게 입력된 데이터의 현재 라인 출력
n N 입력된 데이터의 다음 라인을 복사/추가
p P 현재 패턴 공간 출력
s/regexp/replacement/ 정규 표현식(regexp)에 해당하는 데이터를 그 다음 오는 데이터(replacement)로 변경함
t label / T label 앞에서 선언된 명령어를 실행 후 라벨로 분기
w 파일명 / W 파일명 명시한 파일에 현재 패턴 공간을 저장함
x 홀드와 패턴  공간의 콘텐츠를 교환함
y/source/dest/ 패턴이 포함된 라인의 문자열(source)를 dest 문자열로 변경

( b label 명령어를 사용할 경우 )

 

명령어 b label은 sed 명령어를 수행하거나 b label을 만나면 해당 라벨로 분기를 수행합니다.

 

다음 예제의 sed-script1.txt를 보면 # Test가 포함된 라인부터 3줄까지가 어드레스인 범위이며, 중괄호{} 사이의

블록에는 읽어들인 라인에 값이 없을 경우 다음 명령어인 문자열 변경을 수행하지 말고, label1이라는 라벨로 분기하라는 내용입니다.

 

이와 같이 sed 수행이 불필요한 경우 label을 통해 sed 수행을 분기할 수 있습니다.

이렇게 생성된 파일을 이용하여 sed를 수행하면 다음과 같이 Test나 test가 dev로 변경된 것을 확인할 수 있습니다.

 

cat sed-script1.txt

 

/# Test/,+3  {

# if input line is empty, doesn't execute replacing

/^#/ b label1

s/[tT]est/dev/

: label 1

p

}

 

# 스크립트 수행 결과 test가 dev로 변경되었음

sed -n -f sed-script1.txt hosts

 

 

 

 

# c \text 명령어를 사용할 경우

 

c \text 명령어는 앞에서 명시한 어드레스가 포함된 라인을 명시한 text로 변경하라는 의미입니다.

 

다음 예제를 보면 service.e로 시작되는 문자열이 포함된 라인을

122.10.10.30 vip.service.example.com으로 내용을변경하였음을 확인할 수 있습니다.

 

sed 명령어 다음에 사용된 tail 명령어는 파일 내용이 길어 해당 내용을 마지막 4라인만 확인하기 위해 사용되었습니다.

 

# service.e 가 있는 라인의 값을 변경

sed '/service.e/ c \122.10.10.30 vip.service.example.com' hosts | tail -n4

 

# d와 D 명령어를 사용할 경우

 

명령어 d와 D는 앞에서 명시한 어드레스에 해당하는 문자열이 포함된 라인을 삭제합니다.

 

이때, d 명령어는 뉴라인과 상관없이 해당 문자열이 포함된 라인을 삭제하며, D 명령어는 패턴 공간의 뉴라인을 인식하여 해당 뉴라인까지만 삭제합니다. 예제를 통해 다시 한번 더 설명하겠습니다.

 

다음 첫 번째 예제는 hosts의 문자열 중 We Will test to replace를 We will test to와 replace 사이에 뉴라인 \n을 추가하여 문자열 변경을 하였습니다. 그리고, text 포함된 라인을 삭제한 후 편집 내용을 출력해 보면 We Will로 시작하는 라인이 모두 사라진 것을 확인 할 수 있습니다. 이와 반대로 D 명령어를 사용한 두 번째 예제를 보면 We will test to까지만 삭제하고, 나머지 문자열은 삭제되지 않았음을 알수 있습니다.

 

# 뉴라인 상관없이 test가 포함된 라인삭제

sed -n '0,/NaleeJang/ {
s/We will test to replace/We will test to \nreplace/
/test/ d
p }' hosts

 

# 패턴 공간에 포함된 뉴라인을 인식한 후 test가 포함된 라인 삭제

sed -n '0,/NaleeJang/ {
s/We will test to replace/We will test to \nreplace/
/test/ D
p }' hosts

 

# h와 H 명령어를 사용할 경우

 

명령어 h 또는 H는 이런 홀드 버퍼의 내용을 패턴 버퍼로 복사합니다.

다음 예제는 Production을 Service로 변경한 후

홀드 버퍼의 내용을 패턴 버퍼로 복사하고 패턴 버퍼의 내용을 출력한 것 입니다.

문자열 변경은 패턴 버퍼에서 수행했고, 그 이후 홀드 버퍼를 패턴 버퍼로 복사했기 때문에

패턴 버퍼에서 변경했던 문자열을 원래 문자열로 원복 되었음을 알 수 있습니다.

 

# 홀드 버퍼 복사로 변경한 문자열 정보가 보이지 않음

sed -n '/Product/,+3 {

s/Production/Service/

h

p }' hosts

---------------------------------------------------------------------------------------------------------------------

  • 패턴 스페이스(Pattern space)와 홀드 스페이스(hold space)
  • sed 명령어는 동작시 내부적으로 두개의 워크스페이스를 사용하는데,
    (마치 우리 복사 붙여넣기의 임시 저장소 클립보드와 같다)
    이 두 버퍼를 패턴 스페이스(=패턴 버퍼)와 홀드 스페이스(=홀드 버퍼)라고 합니다.
  • 패턴 버퍼: sed가 파일을 라인단위로 읽을 때 그 읽힌 라인이 저장되는 임시 공간
    우리가 sed명령어로 출력하라는 명령을 주면 여기 있는 버퍼 내용을 출력하는거고,
    뭔가 조작을 하면 여기 저장되어 있는 내용을 조작하는 겁니다. 원본을 건드는게 아닙니다.
    즉 이 버퍼는 현재 내가 담고 있는 정보를 갖고 있겠죠. 텍스트 1라인에서 2라인으로 넘어가 글을 읽게 되면
    여기 패턴 버퍼에는 2라인 현재 내용이 저장되겠죠.
  • 홀드 버퍼 : 홀드 스페이스는 패턴 버퍼처럼 짧은 순간 임시 버퍼가 아니라
    좀 더 오랜 기간 가지고 있는 저장소입니다.
    2라인 작업중이더라도 1라인을 기억하고 있을 수 있는 거예요.
  • 즉, 어떤 내용을 홀드 스페이스에 저장하면,
    sed가 다음 행을 읽더라도 나중에 내가 원할 때 불러와서 재사용할 수 있는 버퍼가 홀드 버퍼가 됩니다.

출처 : https://nasa1515.tech/linux-sed/

---------------------------------------------------------------------------------------------------------------------

# 홀드 버퍼 복사로 변경한 문자열 정보가 보이지 않음

 

sed -n '/Product/,+3 {

s/Production/Service/

h

p }' hosts

 

# I 명령어를 사용할 경우

 

I 명령어는 현재 읽어들인 라인을 출력하는 명령입니다.

다음 예제는 host 파일에서 Product가 포함된 라인부터 아래 3줄까지 입력되는 현재 라인을 출력하는 예입니다.

I 명령어는 패턴 버퍼의 내용을 출력하는 p 명령어와는 다르게 문자의 끝을 알리는 $ 기호와 같은 특수 기호를 함께 출력합니다.

 

# I width 명령어를 사용할 경우

 

I width 명령어는 width는 너비를 의미하는 숫자로, 명시한 숫자만큼 라인의 너비를 보여줍니다.

 

다음 예제는 I 20을 사용하여 해당 내용을 너비 20에 맞추어 보여주고, 나머지 문자열은 다음 라인에 보여줍니다.

 

# 라인 너비를 20 에 맞추어 보여줌

 

sed -n '/Product/,+3 l 20' hosts

 

#n과 N명령어를 사용할 경우

 

# 입력된 라인의 다음 라인을 복사함. 복사후 출력을 했으므로 복사한 값 출력

 

sed -n '/Prodcut/,+3 {

n

p } ' hosts

 

# 복사전 출력을 했으므로 현재 입력된 라인을 출력

 

sed -n '/Product/,+3 {

p

N }' hosts

 

# p와 P 명령어를 사용할 겨웅

 

명령어 p와 P 명령어는 패턴 공간의 내용을 그대로 출력합니다. 이때, 패턴 내용에 편집에 의해 삽입된 뉴라인이 있다면 p는 뉴라인 상관없이 패턴 내용을 그대로 출력하지만, P는 뉴라인 다음 라인은 출력하지 않습니다.

 

아래 첫 번째 예제에서는 p를 사용하여 패턴 공간에 변경된 내용을 그대로 출력하였고, 두 번째 예제에서는 P를 사용하여 뉴라인이 있는 라인의 다음 라인은 출력되지 않았음을 알 수 있습니다.

 

# 소문자 p는 패턴 공간 내용을 그대로 출력

sed -n '0,/NaleeJang/ {

s/We will test to replace/We will test to\nreplace/

p }' hosts

 

# 대문자 P는 패턴 공간을 출력하되, 뉴라인이 있는 라인은 뉴라인까지만 출력

sed -n '0,/NaleeJang/ {

s/We will test to replace/We will test to\nreplace/

P }' hosts

 

#s/regexp/replacement/ 명령어를 사용할 경우

 

s/regexp/replacement/ 명령어는 regexp라는 정규 표현식과 일치하는 문자열을 replacement에서

명시된 문자열로 변경합니다.

 

" sed의 가장 기본적이면서 대표적인 명령어로 가장 많이 사용되는 명령어입니다. "

 

다음 예제는 0번째 라인부터 Nalee라는 문자열이 처음으로 검색된 라인에서 # 문자를 공백으로 변경하는 예제입니다.

 

sed -n '0,/Nalee/ {

s/^# //

p }' hosts

 

-------------------------------------------------------------------------------------------------

 

 

sed 명령어들을 대충 공부하고

쉘스크립트 예제들을 연습하고있던차

 

sed "s/ID_LIKE=//;s/\"//g"

 

sed명령어를 얼추 다 봤는데도

 

/;s/\"/

 

이게 뭔 뜻인지 도통 이해가 안되서 한참을 고민했다.

 

s/찾을문자열/바꿀문자열/g 형태를 쓴거같기는 한데...

 

 

구글링을 한 30분했더니..

 

파일 전체에서 특정 문자를 다른 걸로 바꾸고 싶을 때

sed 's/기존문자/다른문자/;s/기존문자2/다른문자2/'

여러 문자 바꿀 때는 세미콜론으로 구분해서 넣으면됨.

 

라고 sed명령어 한 문장에 2개를 쓰는것때문에 ;가 삽입된거였다.

해석을 해보면 ..

 

ID_LIKE=라는 문자열을 찾아서 // 없애고

첫번째 sed명령어의 마지막이라는 뜻으로 ;

그다음 바로 두번째명령어인 s/"//

" 쌍 따옴표를 찾아서 // 없애라는 뜻의 명령어였다..

 

 

 

 

 

 

 

 

728x90
728x90

날짜와 시간을 알려주는 date 명령어는 개발할 때는 물론이고,

시스템의 데이터를 동기화할때,

데이터를 백업할 때 등등 매우 많은 곳에서 사용합니다.

 

그런데, 막상 date를 이용해 내가 원하는 포맷으로 날짜를 출력하고 싶을 때는

어떻게 해야 하는지 잘 모르거나 생각이 나지 않아 인터넷에서 검색하곤 합니다.

 

[ Date 포맷 ]

 

date 포맷은 날짜와 포맷을 내가 원하는 형식으로 출력할 수 있도록 도와줍니다.

 

% 퍼센트 기호와 함께 사용되며 요일, 년, 월, 일, 시, 분, 초 등을 조합하여 원하는 날짜와 시간으로 출력할 수 있습니다.

 

아래 표는

 

런 date의 포맷을 정리한 것으로 다음과 같은 포맷을 사용하면, 다양하게 날짜와 시간을 표현할 수 있습니다.

 

포맷 설명
%% % 기호
%a 로케일 타입의 짧은 요일 (예 : Mon)
%A 로케일 타입의 요일 (예 : Monday)
%b 로케일 타입의 짧은 월 (예 : Jan)
%B 로케일 타입의 월 (예: January)
%c 로케일에 따른 날짜와 시간
(예: Thu Mar 3 23:05:25 2005)
%C 세기 (예 : 21)
%d 일 (예: 01)
%D 날짜 %m/%d/%y
%e 일 %_d와 동일함
%F 날짜(%Y-%m-%d)
%g 2 자리수 연도
%G 4 자리수 연도
%N 나노초(000000000..999999999)
%p 로케일 타입의 AM 또는 PM
%P %p와 동일하며, 소문자임
%r 로케일 타입의 시(예: 11:11:04 PM)
%R 24시간 기준의 시와 분, %H:%M과 동일
%s %UTC 타입의 초
%S 초 (00..60)
%t
%T 시간(%H:%M:%S)
%u 요일(1..7); 1은 월요일임
%U 일요일로 시작하는 연도의 주수 (00..53)
%V 월요일로 시작하는 연도의 주수 (01..53)
%w 주별 일수 (0..6); 0은 일요일임
%W 월요일로 시작하는 연도별 주수(00..53)
%h %b와 동일함
%H 시(00..23)
%I 시(01..12)
%j 일(001..366)
%k 시(0..23), %_H와 동일함
%l 시( 1..12 ), %_l와 동일함
%m 월(01..12)
%M 분(00..59)
%n 뉴라인
%x 로케일 타입의 날짜(예: 12/31/99)
%X 로케일 타입의 시간(예: 23/13:48)
%y 연도(00..99)
%Y 연도
%z 타임존(예: +0900)
%:z 타임존(예: +09:00)
%::z 타임존(예: +09:00:00)
%:::z 타임존(예: +09, +05:30)
%Z 타임존(예: KST)

 

다음은 위의 포맷을 활용한 예제를 알아보자.

 

#년-월-일 형태의 날짜 표현

date +%Y-%m-%d

ㄴ 2022-01-20

 

# 월-일-년(00) 형태의 날짜 표현

date +%m-%d-%y

ㄴ 01-20-22 %y(2자리수 연도)

 

# 일-영문월-년 형식의 날짜 표현

date +%d-%b-%Y

ㄴ 11-Jun-2020

 

# 12시간 기준의 시:분:초 AM/PM 형식의 시간 표현

date '+%Y-%m-%d %l:%M:%S %p'

ㄴ 12:39:04 PM

 

# 24시간 기준의 시:분:초 시간 표현

date '+%k:%M:%S'

ㄴ 12:40:43

 

# 년-월-일 시:분:초 AM/PM 형식의 날짜 표현

date '%Y-%m-%d %l:%M: %p'

ㄴ 2022-01-20 11:43 AM

 

# 년-월-일 시:분:초 타임존 시간차 형식의 날짜 표현

date '+%Y-%m-%d %k:%M: %Z %:z'

ㄴ 2022-01-20 11:17 KST +09:00

 

# 요일, 월, 일, 년 형식의 날짜 표현

date '+%A, %B %d,%Y'

ㄴ Thursday, June 11, 2020

 

# 요일, 월 일,년 at 시:분:초 AM/PM 형식의 날짜 표현

date '+%A, %B %d, %Y at %H:%M:%S %p'

ㄴ Thursday, January 20, 2022 at 11:28:12 AM

 

# 년월일시분초 형식의 날짜 표현

date +%Y%m%d%H%M%S

ㄴ 20220120113340

 

# 이번 주는 올해의 몇 번째 주일까?

echo "This week is the $(date +%V)th week of the year."

ㄴ This week is the 03th week of the year.

 

# 오늘은 몇 번째 요일일까?

echo "Today is the $(date +%u)th day of the week."

Today is the 4th day of the week.

 

728x90

+ Recent posts