<?
        //디데이 구하는 계산식 추가 - 20151127 gdkwon
        $days1 = intval((strtotime(date("Y-m-d",time())) - strtotime("2016-05-28")) / 86400);

        if($days1>0){
                $dmark = "+";
                $days2 = $days1;
        }else{
                $dmark = substr($days1,0,1);    //$days1의 부호
                $days2 = substr($days1,1);
        }

        $dslen = strlen($days2);                        //$days2의 길이


        if($days1==0){
                $dday = "D-day";
        }else if($dslen == 1){                          //$dslen이 한자리면 앞에 0을 붙임
                $dday = "D".$dmark."0".$days2;
        }else{
                $dday = "D".$dmark.$days2;
        }
?>

<head>
<meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, width=device-width" />
</head>
<p><h2><?=$dday?></h2></p>

[설명] strtotime("2016-05-28")) 항목에 d-day 의 날짜를 입력해준다.

[쉘 프로그래밍을 위한 sed 활용 예제 정리]

1. 특정 패턴 아래 라인 삭제 또는 추가

sed -i '/apple.*/{n;d}' abc.txt  // apple패턴아래 1줄 삭제

[결과] cat abc.txt
apple
banana

sed -i 's,\(apple.*\),\1\ngrape,g' abc.txt  // apple패턴아래 grape 추가

[결과] cat abc.txt
apple
grape
ornage
banana

[원본]abc.txt 의 내용

apple
orange
banana


2. 개행문자 (newline) 이 2개 연속으로 있을 때를 이를 1개로 변경하는 명령

sed -i '/^$/N;/^\n$/D' filename

filename 의 내용중 newline 이 2개 연속으로 있을때 이를 1개로 치환하며  -i 옵션은 변경된 내용을 출력하지 않고 filename 에 저장


3. sed 명령어에 변수사용

sed "s/abc/$dma/g" 와 같이 큰따옴표(") 안에 변수를 사용하면 된다.
sed 's/abc/$dma/g' 명령어는 abc 문자를 $dma 라는 문자로 바꾸라는 뜻이다.

즉, 작은따음표의 경우에는 $dma를 변수 dma로 인식하지 않고 문자열 $dma로 인식한다. 

 

4. 특정패턴 위/아래 에 내용 추가

sed "/찾을패턴/i추가할패턴" 파일명  (상단에 추가)
sed "/찾을패턴/a추가할패턴" 파일명 (하단에 추가)

 

5. 특정 라인 맨 앞/뒤 내용 추가

 

sed "행번호s/^/문자열/" 파일명 (라인 맨 앞 추가)
sed "행번호s/$/문자열/" 파일명 (라인 맨 뒤 추가)

 

6. 변수 값에 슬래쉬 (/) 가 포함된 값을 치환 할 때

[예제]
var="/home/user1/public_html" 변수 값 앞에 주석 (#) 을 붙인다고 하면
sed -i "s~$var~#$var~g" "파일명"