이것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/'
귀하의 예처럼 인쇄하는 대신 명령 자체를 인쇄하고 싶습니다 .b
b a
실제로 최근 Android에서 이 명령을 실행하면 adb shell
예상되는 결과를 얻습니다.
$ adb shell
android:/ $ echo 'a' | sed 's/a/b/'
b
귀하의 기기와 다른 기기에 있습니다(특정 버전은 아래 참조 참조).
b a
출력 (대체, 공백, 원본) 을 생성하는 것이 무엇인지 생각할 수 없습니다 . 시작하기 전에 이것이 실제로 보고 있는 내용인지 확인하는 것이 가장 좋습니다. 전체 명령을 쓰여진 대로 정확하게 키별로 입력하세요(붙여넣지 마세요).
해당 출력이 생성된다면 시스템에 존재하는 버그에서 비롯된 것이라고 상상할 수 있습니다. 그런데 어떤 오류가 어디에 있습니까?
문제의 범위를 좁히세요
먼저, 쉘의 파이프가 예상대로 작동하는지 확인하십시오. 매개변수가 없는 간단한 명령을 매개변수가 없는 다른 간단한 명령으로 파이핑해 보세요(예: ) env | head
.
sed 를 tr a b
.head
sed
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