Bash에서는 sed라는 커맨드가 있다. 내가 전에 매우 주의 깊게 공부했던 커맨드인데 보통 사람들은 간단하게만 활용하고 깊이있게 다룰려고 하지 않는 것 같아 아래에 정리해서 설명하기로 했다. 사실 sed 커맨드의 “꽃”은 loop 기능이다. 이걸 활용할줄 알아야 진정한 효력(?)을 볼수 있다. 전체라인을 변수에 담는 방법 TEST=$(cat sample.txt | sed -n -r '/<a.*/{/\/a>/!{:loopA;N;/\/a>/!bloopA;s/\n//g};p}' | grep -o -E '<a([^<]|<[^a])*<\/a>'); echo […]
Bash: find, cat, grep 집중 공략, 아래의 내용을 유심히 보면서 공부하면 됩니다.
find /etc -type f -exec cat '{}' \; 어디에서 자주봤던 명령어입니다. find 커맨드로 /etc 디렉토리에서 type이 파일인것들을 찾아서 -exec(실행) 시켜주세요 – 라는 의미이다. {}가 의미하는것은 find에서 찾은 파일을 말하는 것입니다. 그파일을 다음과 같은 커맨드로 실행시켜 달라는 것!!. cat filename 그런데 “\;” 라는 표기가 있는데 이건 뭔가하면 스크립트의 종료를 의미한다. 쉽게 이야기 하면 exec 커맨드가 bash에서 […]
Bash에서 tr(translate) 커맨드 활용방법
echo "aaaa1234bbbb" | tr 'a' 'c' => a를 모두 c로 교체 echo "aaaa1234bbbb" | tr -c '[:digit:]' '?' => 숫자를 물음표로 교체함. echo "aaaa1234bbbb" | tr -cd '[:digit:]' => 숫자인 것은 모두 삭제
Bash에서 Split 활용하는 방법
1. tr 커맨드를 활용하는 방법 #!/bin/bash STR="123,456,567 5,343" STR_ARRAY=(`echo $STR | tr "," "\n"`) for x in "${STR_ARRAY[@]}" do echo "> [$x]" done > [123] > [456] > [567] > [5] > [343] 2. IFS(Internal Field Separator) 를 활용하는 방법 #!/bin/bash STR="123,456,567 5,343" OLD_IFS="$IFS" IFS="," STR_ARRAY=( $STR ) IFS="$OLD_IFS" for x in "${STR_ARRAY[@]}" do echo "> […]
Bash 배열 활용에 관련된 정리된 내용
1. 배열다루기 array_name=("value 1" "value 2" "value 3") echo "array = ${array_name[@]}" # 출력 결과 # array = value 1 value 2 value 3 printf "value = %s\n" "${array_name[@]}" # 출력 결과 # value = value 1 # value = value 2 # value = value 3 for value in "${array_name[@]}"; do echo $value done […]
Bash에서 각종 Arguments가 어떻게 넘어오는지? 간단명료한 설명!!
Bash에서 각종 Arguments가 어떻게 넘어오는지 그리고 어떻게 활용해야 하는지 잘 설명된 내용이다. # ————- SCRIPT ————- # #!/bin/bash echo echo "# arguments called with —-> ${@} " echo "# \$1 ———————-> $1 " echo "# \$2 ———————-> $2 " echo "# path to me —————> ${0} " echo "# parent path ————–> ${0%/*} " echo […]
Bash : while문에 파이프로 던질경우 서브 프로세스를 생성하므로 while 문 안에 있는 변수를 활용할수 없다.
while문에 파이프로 던질경우 서브 프로세스를 생성하므로 while 문 안에 있는 변수를 활용할수 없다. 그러나 {} 블럭을 사용하면 while문 밖에서도 사용이 가능하다. <– 이렇게 할바에 리다이렉트로 사용하는편이 낫다. declare -a FILES i=0 find ${IMG_DIR}/${TARGET_DIR}/ -maxdepth 1 -type f -print0 -regex ".*\.\(jpg\|JPG\)" | { while IFS= read -r -d '' FILE; do echo "$((i++)) : $FILE <br […]