표준 편차

표준 편차

sed의사코드:

sed
    "FROM"
        $to = ".*";$
    "TO"
        $to = "'"$new_email_address"'";
    "GLOBAL"
FILE_PATH
  • 줄 바꿈만 허용됩니다.
  • 탭 들여쓰기 허용
  • 단일 라인 분할을 사용할 필요가 없습니다.
  • 아래와 같이 명령을 따옴표로 묶을 필요는 없습니다.sed "/s/X/Y/g" FILE
  • 위의 예와 같은 데이터 구조를 사용하는 것이 더 쉬울 것입니다 "'"$new_email_address"'". 왜냐하면 이미 따옴표로 표시된 조밀하고 긴 줄 안에 있지 않기 때문입니다. 또한 줄 바꿈은 변수가 있는 문자열에 대해서만 일부 새 문자를 사용하여 수행할 수 있습니다. STRING_WITH_VARIABLEEXPANSION data STRING_WITH_VARIABLEEXPANSION따옴표 대신 확장( )

일반 구문보다 더 접근하기 쉽고 질서정연하기 때문에 이와 같은 구문을 사용하게 되어 기쁩니다. sed따라서 제목에 질문이 있습니다.

답변1

더 접근하기 쉬운 것을 개발하려는 시도가 있다는 것을 알고 있습니다 sed. 그러나 그것은 정확히 당신이 원하는 것이 아닙니다.

표준 편차

직관적인 CLI 찾기 및 바꾸기( sed대체) rust.

기능이 제한되어 있습니다( sed. 초능력을 원한다면 sed기타 유틸리티에 대해 자세히 알아보는 것이 좋습니다. 나는 sdFedora 34(for dnf install sd)와 Ubuntu 21.04(Ubuntu를 사용하여 Cargo와 종속성을 설치했습니다: ) 에서 테스트했습니다 build-essential.


줄 바꿈을 쉼표로 바꾸십시오.

sd: sd '\n' ',' input.txt
sed: sed -i ':a;N;$!ba;s/\n/,/g' input.txt

sd이 경우 구문은 와 동일합니다 tr.

tr '\n' ',' < input.txt

해당 위치에서 파일을 수정합니다.

sd: sd before after file.txt
sd: sd 'before this' 'after that' file.txt
sed -i 's/before/after/g' file.txt

슬래시가 포함된 문자열에서 콘텐츠를 추출합니다.

# Strings between () are groups.

echo "sample with /path/" | sd '.*(/.*/)' '$1'
/path/

echo "sample with /path/" | sd '(.*)/.*/' '$1'
sample with

# Capture two groups and invert.
echo "sample with /path/" | sd '(.*)(/.*/)' '$2$1'
/path/sample with

echo 'lots((([]))) of special chars' | sd -s '((([])))' ''
lots of special chars
    -s, --string-mode
            Treat expressions as non-regex strings
        

여러 줄 교체:

sd 'test\nmultiline' 'this\ntest'  input.txt

또 다른 옵션:

-p, --preview
  Output result into stdout and do not modify files

더 간단한 시도가 있습니다 find( rust또한 개발 중임). FD.

관련 정보