既存のファイルに [)"$&...ect 記号を含む長い行(コードなど)を追加するには?

既存のファイルに [)

ホームページに共有されているコードをすべて試してみましたが、成功しなかったので、この質問をします。

  1. 非常に長いテキストを含むファイルがあります。すべてのテキストは最初の行にのみあります。

  2. このファイルの末尾に記号を含む長い行を追加したいと思います。私の行は次のとおりです。

    [{\n"code":"final .net.wifi.WifiManager wifi \u003d\n "typeName":"","palette":"9","type":" ","spec":"Enable WiFi"}]'
    

\nなどの記号を含む行を追加したいと思います [{]"...。既存のファイルの最初の行の終わりまで。

ベストアンサー1

行が非常に複雑でエスケープ文字がたくさん含まれているため、Bash などの一部のシェルでサポートされている printf "%q" を使用することをお勧めします。次のような短いスクリプトを使用できます。

#!/usr/bin/env bash

read -r
printf "%q\n" "$REPLY"

それを実行し、次の行を貼り付けます。

$ ./printf-q.sh
[{\n"code":"final .net.wifi.WifiManager wifi \u003d\n "typeName":"","palette":"9","type":" ","spec":"Enable WiFi"}]'
\[\{\\n\"code\":\"final\ .net.wifi.WifiManager\ wifi\ \\u003d\\n\ \"typeName\":\"\"\,\"palette\":\"9\"\,\"type\":\"\ \"\,\"spec\":\"Enable\ WiFi\"\}\]\'

最後の行は、次のようにエスケープ文字を追加しなくても、シェルで使用できる形式で表示されます。

$ echo \[\{\\n\"code\":\"final\ .net.wifi.WifiManager\ wifi\ \\u003d\\n\ \"typeName\":\"\"\,\"palette\":\"9\"\,\"type\":\"\ \"\,\"spec\":\"Enable\ WiFi\"\}\]\' >> FILE
$ cat FILE
[{\n"code":"final .net.wifi.WifiManager wifi \u003d\n "typeName":"","palette":"9","type":" ","spec":"Enable WiFi"}]'

おすすめ記事