학교 프로젝트를 더 쉽게 만들기 위해 bash 스크립트에서 대문자로 시작하는 각 줄에 구분 기호를 추가하고 싶습니다. 누구든지 나를 도와줄 수 있나요? case 명령을 사용하여 파일을 한 줄씩 읽으려고 시도했지만 작동하지 않습니다. 내가 무엇을 하고 있는지 정말 이해가 되지 않습니다. 이것이 내가 지금까지 가지고 있는 것입니다: (저는 스크립팅이 처음입니다. 화나게 하지 마세요)
#!/bin/bash
input=/home/user/file
while IFS= read -r var
do
case [A-Z]
sed 's/^/#/' file
done
답변1
텍스트를 처리하기 위해 쉘 루프를 사용하지 않습니다.. 텍스트 처리는 한 번에 한 줄씩 입력을 처리하는 텍스트 처리 도구를 통해 수행됩니다.
#! /bin/sh -
input=/home/user/file
sed 's/^[[:upper:]]/#&/' < "$input"
각 줄의 start()에서 대문자 앞에 삽입됩니다 #
.^
$input
여기서 대문자는 로캘 설정에 따라 결정됩니다. 여기에는 ABCDEFGHIJKLMNOPQRSTUVWXYZ 문자가 포함되며, 있을 경우 Á, Ź 또는 Π도 포함될 수 있습니다.
ABCDEFGHIJKLMNOPQRSTUVWXYZ로만 제한하려면 다음과 같이 작성할 수 있습니다.
sed 's/^[ABCDEFGHIJKLMNOPQRSTUVWXYZ]/#&/' < "$input"
[A-Z]
그 자체로는 로케일에 따라 무엇이든 일치할 수 있습니다. 당신은 그것이 abcdefghijklmnopqrstuvwxy
시스템과도 일치한다는 것을 알게 될 것입니다. z
대부분의 시스템에서는 Á와 일치하지만 로케일의 문자 맵에 있는 경우 Ź와 일치하지 않습니다. 문자 시퀀스(헝가리어와 같은 다중 문자 조합 요소 Ddzs
)와도 일치할 수 있습니다.