sed s コマンドは置き換えられません

sed s コマンドは置き換えられません

これsed注文する

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

出力

b a

これは正しいですか?または生成する必要がありますか?b


修正する

実行中のSamsung Tab S2で停止しました。Android 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 bheadsed

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

関連情報