sed s 명령은 대체되지 않습니다

sed s 명령은 대체되지 않습니다

이것sed주문하다

echo 'a' | sed 's/a/b/'

산출

b a

이것이 맞습니까? 아니면 생성해야합니까?b?


고쳐 쓰다

실행 중인 Samsung Tab S2에서 멈췄습니다.안드로이드 6.0.1그리고adb shell

uname -a Linux localhost 3.10.9-8374498 #1 SMP PREEMPT Fri Jul 8 14:31:31 KST 2016 armv7l

sed --version This is not GNU sed version 9.0

type sed sed is a tracked alias for /system/bin/sed

답변1

echo 'a' | sed 's/a/b/'귀하의 예처럼 인쇄하는 대신 명령 자체를 인쇄하고 싶습니다 .bb a

실제로 최근 Android에서 이 명령을 실행하면 adb shell예상되는 결과를 얻습니다.

$ adb shell
android:/ $ echo 'a' | sed 's/a/b/'
b

귀하의 기기와 다른 기기에 있습니다(특정 버전은 아래 참조 참조).

b a출력 (대체, 공백, 원본) 을 생성하는 것이 무엇인지 생각할 수 없습니다 . 시작하기 전에 이것이 실제로 보고 있는 내용인지 확인하는 것이 가장 좋습니다. 전체 명령을 쓰여진 대로 정확하게 키별로 입력하세요(붙여넣지 마세요).

해당 출력이 생성된다면 시스템에 존재하는 버그에서 비롯된 것이라고 상상할 수 있습니다. 그런데 어떤 오류가 어디에 있습니까?

문제의 범위를 좁히세요

먼저, 쉘의 파이프가 예상대로 작동하는지 확인하십시오. 매개변수가 없는 간단한 명령을 매개변수가 없는 다른 간단한 명령으로 파이핑해 보세요(예: ) env | head.

sed 를 tr a b.​headsed

sed파이프라인 외부에서 시도해 볼 수도 있습니다 . sed대화형 명령으로 독립 실행형을 실행하고 a입력을 입력합니다(예: ). 완료되면 키를 눌러 Ctrl-D파일의 끝을 나타냅니다.

근무 환경

쉘은 Toybox의 sed 명령인 MirBSD KSH( mksh) 입니다.sed

$ adb shell
android:/ $ sed --version
This is not GNU sed version 9.0
android:/ $ type sed
sed is a tracked alias for /system/bin/sed
android:/ $ ls -l /system/bin/sed
lrwxr-xr-x 1 root shell 6 2009-01-01 17:00 /system/bin/sed -> toybox
$ toybox --version
0.7.0-a324bde36bd6-android
$ echo $KSH_VERSION
@(#)MIRBSD KSH R52 2016/01/20

답변2

참고: 다른 답변도 환영합니다(이 답변은 받아들이지 않습니다).

나는 다음을 가지고 있습니다구성내가 설정하고 싶은 파일tls=true

IP=192.168.1.1포트
=08
TLS=거짓

내 해결 방법은 다음과 같습니다(테일 설정에서만 작동함).구성)

tls=$(sed -n '/false/p' config)
sed -i '/false/d' config
echo ${tls/false/true} >> config

답변3

we can do it by awk 

echo "a" | awk '{gsub("a","b",$1);print $1}'
b

관련 정보