Bash

[Bash] 문자열 조작

인공지능하마 2023. 10. 26. 22:38
반응형

문자열 자르기 (Substring):

문자열에서 특정 부분을 추출하려면 ${variable:starting_index:length} 형식을 사용합니다.

original_string="Hello, World!"
substring="${original_string:7:5}" # "World"
echo $substring

 

문자열 붙이기 (Concatenation):

두 문자열을 합치려면 ${string1}${string2}을 사용하거나, 변수에 대입할 수 있습니다.

string1="Hello, "
string2="World!"
concatenated="${string1}${string2}" # "Hello, World!"
echo $concatenated

 


문자열 검색 및 대체:

sed를 사용하여 문자열 검색 및 대체를 수행할 수 있습니다.

original_text="I love apples, apples are great."
updated_text=$(echo $original_text | sed 's/apples/oranges/g')
echo $updated_text # "I love oranges, oranges are great."

 

문자열 길이 확인:

문자열의 길이를 확인하려면 ${#variable}을 사용합니다.

bash
Copy code
text="This is a test."
length=${#text}
echo "The length of the text is $length characters."

 

문자열 분할 (Splitting):

IFS (Internal Field Separator)를 설정하여 문자열을 특정 구분자로 분할할 수 있습니다.

data="apple,banana,grape"
IFS=',' read -ra fruits <<< "$data"
echo "Fruits: ${fruits[@]}" # "Fruits: apple banana grape"



정규 표현식 사용:

grep을 사용하여 문자열에 정규 표현식을 적용하여 패턴을 찾을 수 있습니다.

text="The quick brown fox jumps over the lazy dog."
if echo $text | grep -q "fox.*lazy"; then
echo "Match found."
else
echo "Match not found."
fi

 

대소문자 변환:

tr을 사용하여 대문자를 소문자로, 소문자를 대문자로 변환할 수 있습니다.

text="Hello, World!"
lower_case=$(echo $text | tr '[:upper:]' '[:lower:]')
upper_case=$(echo $text | tr '[:lower:]' '[:upper:]')
echo "Lowercase: $lower_case"
echo "Uppercase: $upper_case"

 

문자열의 공백 제거:

sed를 사용하여 문자열에서 공백을 제거할 수 있습니다.

text=" Some spaces here "
cleaned_text=$(echo $text | sed -e 's/ */ /g' -e 's/^ //' -e 's/ $//')
echo "Cleaned text: "$cleaned_text""

 

문자열에서 특정 패턴 찾기:

문자열에서 특정 패턴을 찾고 해당 패턴의 위치를 알고 싶을 때, expr index를 사용할 수 있습니다.

이 스크립트는 'brown' 문자열의 위치를 찾아 출력합니다.

text="The quick brown fox"
pattern="brown"
position=$(expr index "$text" "$pattern")
echo "The position of '$pattern' in the text is $position."



문자열에서 접두사 또는 접미사 확인:

문자열이 특정 접두사 또는 접미사로 시작하는지 또는 끝나는지 확인하려면 [[ $string == prefix* ]] 또는 [[ $string == *suffix ]]를 사용할 수 있습니다.

이 예제에서는 문자열이 '.jpg'로 끝나는지 확인합니다.

bash
Copy code
text="apple.jpg"
if [[ $text == *.jpg ]]; then
    echo "This is a JPG file."
fi



문자열에서 정규 표현식 사용:

=~ 연산자를 사용하여 문자열에서 정규 표현식을 사용하여 패턴을 찾을 수 있습니다.

이 예제에서는 문자열에서 버전 번호를 추출하기 위해 정규 표현식을 사용합니다.

text="Version 2.5.1"
if [[ $text =~ [0-9]+\.[0-9]+\.[0-9]+ ]]; then
    version="${BASH_REMATCH[0]}"
    echo "Found version: $version"
fi

 


문자열 내에서 여러 패턴 일치 찾기:

grep을 사용하여 여러 패턴을 동시에 검색할 수 있습니다.

이 예제에서는 'fox' 또는 'dog' 중 하나라도 일치하는 경우 "Match found."를 출력합니다.

text="The quick brown fox jumps over the lazy dog."
if echo $text | grep -E "fox|dog"; then
    echo "Match found."
fi

 


문자열에서 특정 위치의 문자 변경:

문자열의 특정 위치의 문자를 변경하려면 배열 인덱스를 사용합니다.

이 스크립트는 문자열의 7번째 위치의 문자를 'F'로 변경합니다.

text="Hello, World!"
index=7
new_char="F"
modified_text="${text:0:index-1}$new_char${text:index}"
echo "Modified text: $modified_text"

 

여러 문자열을 하나의 문자열로 결합:

여러 문자열을 배열에 저장하고, 이들을 하나의 문자열로 결합하려면 for 루프나 * 연산자를 사용할 수 있습니다.

이 예제에서는 과일을 배열에 저장하고, for 루프를 사용하여 모든 과일을 하나의 문자열로 결합하고, 마지막 공백을 제거합니다.

fruits=("apple" "banana" "cherry")
combined_fruits=""
for fruit in "${fruits[@]}"; do
    combined_fruits="${combined_fruits}${fruit} "
done
combined_fruits=${combined_fruits% }  # 마지막 공백 제거
echo "Combined fruits: $combined_fruits"

 


문자열 내에서 문자 빈도수 계산:

문자열 내에서 특정 문자의 빈도수를 계산하려면 grep 및 wc를 사용할 수 있습니다.

이 예제에서는 'o' 문자의 빈도수를 계산합니다.

text="The quick brown fox jumps over the lazy dog."
char="o"
count=$(echo "$text" | grep -o "$char" | wc -l)
echo "Character '$char' appears $count times in the text."

 


문자열에서 공백으로 분할 후 N 번째 단어 추출:

문자열을 공백으로 분할하고 특정 위치의 단어를 추출하려면 배열을 사용할 수 있습니다.

이 스크립트는 문자열을 공백으로 분할하고 세 번째 단어를 추출합니다.

text="The quick brown fox jumps over the lazy dog."
words=($text)
word_index=3
target_word="${words[$word_index]}"
echo "The word at index $word_index is: $target_word"

 


문자열을 역순으로 뒤집기:

문자열을 역순으로 뒤집으려면 rev 명령어를 사용합니다.

text="Hello, World!"
reversed_text=$(echo "$text" | rev)
echo "Reversed text: $reversed_text"

 



문자열 내의 공백 문자 제거:

문자열 내의 모든 공백 문자를 제거하려면 tr 명령어를 사용할 수 있습니다.

text="This is a test."
no_whitespace_text=$(echo "$text" | tr -d '[:space:]')
echo "Text with spaces removed: $no_whitespace_text"



대문자로 시작하는 각 단어를 찾기:

문자열에서 각 단어의 첫 글자가 대문자인 경우를 찾으려면 awk를 사용할 수 있습니다.

text="The Quick Brown Fox"
capitalized_words=$(echo "$text" | awk 'NF{print toupper(substr($1,1,1)) == substr($1,1,1)}')
echo "Capitalized words: $capitalized_words"
반응형