=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                             UNIX GURU UNIVERSE
                                UNIX HOT TIP

                       Unix Tip 2333 - May 22, 2006

                   
http://www.ugu.com/sui/ugu/show?tip.today
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

GREP을 이용하여 빈줄 지우기

awk에 익숙하지 않지만 단순 아스키 파일에서 빈줄을 지우는 빠르고 쉬운 방법을
원하는 사람들은 'grep'과 결합하여 'cat'을 사용하는 것이 효과적인 방법이다.

cat file1 | grep -v '^$' >file2
mv -f file2 file1

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

DELETING BLANK LINES USING GREP

For thos who are not familiar with
awk, but still want a quick and easy
way of removing blank lines from a
flat ascii file, remember that the
use of 'cat' in conjuction with
'grep' is just as effective.

cat file1 | grep -v '^$' >file2
mv -f file2 file1
반응형
Posted by She쥐포s
sed를 이용한 공백지우기

다음의 sed 명령어를 사용하여 파일에서 빈라인과 공백만을 포함한 라인을 제거할 수 있다.
 
sed -e '/^[     ]*$/d' InputFile >OutputFile

단일인용부호(') 사이에 있는 앞의 슬래쉬(/)는 sed에 의해 해석될 정규표현식의 범위를
지정한다.
닫는 단일인용부호 앞의 "d"는 sed에게 정규표현식에 해당하는 라인을 지우도록 한다.
 
정규표현식사이에서 캐럿(^)은 라인의 시작에 해당한다.
[]*는 여는 대괄호([)와 닫는 대괄호(])사이의 문자(또는 숫자)가 0번이상
나타나는 것을 나타낸다.
(위의 정규표현식에서는 대괄호 사이에 공백문자(스페이스)와 탭을 넣어야 한다)
달러기호($)는 라인의 끝에 해당된다.

세가지 정규표현식은 함께 어우러져 빈라인이나 공백이나
탭문자(어떠한 조합이든지)로만 이루어진 라인을 찾아낸다.
 
sed의 표준 작동은 표준출력으로 나타나므로 빈라인(또는 공백(스페이스, 탭)으로만
이루어진)을 제외한 모든 라인을 OutputFile로 보낼 것이다.

-----<원문입니다. 오역이 있을지도 모르니..>-----
I SED BLANK

Using sed, you can remove blank lines, and
lines that contain only whitespace, from a
file using the following:

sed -e '/^[     ]*$/d' InputFile >OutputFile

Within the single quotes ('), the forward
slashes (/) delimit the regular expression
that will be interpreted by sed.  The "d"
before the closing single quote, tells sed
to delete any lines that match the regular
expression.

Within the regular expression, the caret
(^) matches the beginning of a line.
The []* matches zero to many occurrences of
the character list between the open bracket
([) and the close bracket (]) (in the above
regular expression, you must insert a space
and a tab between the brackets).  The dollar
sign ($) matches the end of a line.

These three constructs together match any
blank line or any line that contains only
spaces and tabs (in any combination).

Since the standard operation of sed is to
echo lines to stdout, all lines except blank
lines (or lines that only contain whitespace)
will be sent to OutputFile.
반응형
Posted by She쥐포s

아래글을 보고 Shell에 적용을 해 봤습니다.

DATE=`expr \`date +%d\` + 1 - 1`
echo $DATE

아니면 바로
expr `date +%d` + 1 - 1

흐흐흐

--------------<아래는 퍼온글입니다>------------------
우연히 발견했습니다.

echo date("m");

하시면 결과가 09 이렇게 나오죠(지금이 9월이니까)
그런데 여기서 앞의 0을 제거하는 방법중 가장 쉬운건....

echo date("m")+1-1;

하니까 0이 제거되는군요. 하하핫.

http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=3999

반응형
Posted by She쥐포s

※ 이거 짜다가 머리털 뽑히는 줄 알았다..  뺑이쳤다
아뭏든 이래저래 하다보니 목적은 달성했다.

좀 가다듬어야 하는디...
# locale을 한글로
export LANG=ko_KR.eucKR

# 날짜 중 단자리의 날짜에서 0 떼어내기

DATE=`expr \`date +%d\` + 1 - 1`

# 달력 프로그램에서 년도 표시줄 떼고 요일 표시줄 떼고

cal | grep -v `date +%Y` | grep -v 월 > ./DAL

# 첫 칼럼에 ' ' 필요

sed 's@^@ @g' ./DAL > ./DAL2

# 마지막 칼럼에 ' ' 필요

sed 's@$@ @g' ./DAL2 > ./DAL

# awk로 매치되는 라인이 나올 때까지 if loop

awk '{ if ( $0 ~ / '"${DATE}"' / ) print NR }' ./DAL

사용자 삽입 이미지

반응형
Posted by She쥐포s

퍼왔습니다.
http://devfrog.egloos.com/tb/293560

awk 에서 shell 변수 사용하기

#!/bin/sh
if [ $# -ne 4 ]; then
    echo "Usage: log_cnt <file_name> <err_code> <log_point|0> <proc_hour>"
    exit
fi
cnt=1
if [ $3 -ne 0 ]; then
    cat $1 | awk 'BEGIN{FS=";"}{ if ( $10 == '"${2}"' && $7 == '"${3}"' ) print }' | grep ^$4 | wc -l
else
    while [ "$cnt" -ne 5 ]
    do
        echo "log point $cnt: c"
        cat $1 | awk 'BEGIN{FS=";"}{ if ( $10 == '"${2}"' && $7 == '"${cnt}"' ) print }' | grep ^$4 | wc -l
        cnt=`expr $cnt + 1`
    done
fi

-----
shell script 에서 awk 표현식 안에서 shell 의 input parameter 를 쓸 경우가 있다.
이때, awk 에서 shell 변수로 인식시키기 위해서는 ' " ${변수명} "  ' 과 같은 방식으로 사용해야 한다.

반응형
Posted by She쥐포s

ittoolbox 메일리스트의 unixadmin-l 메일리스트를 보다보니 다음과 같은 내용이 있어
가져왔습니다.

Command Line의 인수로 패스워드로 받는 경우 Shell에서는 패스워드를 숨길 수가
없어 다음과 같은 방식으로 처리합니다.

--------------------<원본>-------------------------
#!/usr/bin/sh
# 일반 유닉스에서 변수를 초기화(?)하는 듯
TEST1=

# 문자열을 입력받기 위한 프롬프트 출력
echo "Enter TEST1:"

# 화면 출력 off
stty -echo

# TEST1에 해당하는 값을 읽음
read TEST1

# 화면 출력 on
stty echo

# 화면에 인수 출력
echo "TEST1=${TEST1}"

# 끝!
exit
--------------------<원본끝>-----------------------

위의 내용을 Linux에서 사용하도록 변형

#!/bin/sh
TEST1=
# -n 옵션으로 한 줄에 표시

echo -n "Enter TEST1:"
stty -echo
read TEST1
echo ""
stty echo
echo "TEST1=${TEST1}"
exit

다음은 실행시의 화면(※ Enter TEST1: 이후에는 표시되지 않음)

사용자 삽입 이미지

반응형
Posted by She쥐포s
이전버튼 1 2 이전버튼

블로그 이미지
She쥐포s
Yesterday
Today
Total

달력

 « |  » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함