Mac と Linux での sed コマンドの違い


質問

(1) Windows システムでは、ファイルの各行は '<キャリッジ リターン><ライン フィード>'、'\r\n' で終わります。

(2) Mac システムでは、ファイルの各行は '<キャリッジ リターン>'、つまり '\r' で終わります。

(3) Unix システムでは、ファイルの各行は '<newline>'、つまり '\n' で終わります。

したがって、ファイル内の改行文字として「\n」を使用すると、Windows メモ帳で開いたときに改行は表示されません。

改行文字として「\r\n」を使用するファイル (Windows ファイル) を Linux または Mac の vim で開くと、\r は ^M と表示されます。


echo "a,b,c,d"

Mac または Linux システムでは、上記の結果はすべて
a,b,c,d

ここで、sed を使用して「,」を改行に置き換え、Linux システムで実行すると

echo "a,b,c,d" |sed 's/,/\n/g'

結果は次のようになります。


代替

Mac で同じコマンドを実行した結果は次のようになります。

代替

解決する


gsed をインストールすることで解決します。

brew install gnu-sed

次に、gsed を使用します。

代替

bash_profile にエイリアスを追加し、sed を gsed に置き換えます。




関連するその他の質問については、[1]を参照してください。


試してみる


sed -i 's#古いパス#新しいパス#g' ターゲット ファイル アドレス


仮想マシンから大規模なファクトリ サーバー上のコンテナに移行するプロセスでは、構成ファイル内のログ ファイルと IP ライブラリ ファイルの場所を書き換える必要があります。

たとえば、元のファイルの log_path を次から/home/google/log/service/qa/変更する必要があります。/home/appops/logs/service/qa/

埋め込むsed -i 's#/home/google/log#/home/microsoft/logs#g' config.yml

(通常は Makefile に追加されます)

代替

別の例として、次のことが必要です。

    city1: /中国/浙江/杭州/余杭/仓前.db
    city2: /中国/浙江/杭州/余杭/闲林.txt
    city3: /中国/浙江/杭州/余杭/中泰.md

への変更

    city1: /中国/余杭/仓前.db
    city2: /中国/余杭/闲林.txt
    city3: /中国/余杭/中泰.md

実行可能sed -i 's#/中国/浙江/杭州#/中国#g' config.yml

代替

別の例として、次のことが必要です。

    city1: /中国/浙江/杭州/余杭/街道/仓前.db
    city2: /中国/江苏/苏州/虎丘/街道/横塘.txt
    city3: /中国/山东/滨州/邹平/街道/黛溪.md

への変更

    city1: /中国/华东/街道/仓前.db
    city2: /中国/华东/街道/横塘.txt
    city3: /中国/华东/街道/黛溪.md

もちろん

sed -i 's#/中国/浙江/杭州/余杭/仓前.db#/中国/华东/余杭/仓前.db#g' config.yml
sed -i 's#/中国/江苏/苏州/虎丘/横塘.txt#/中国/华东/虎丘/横塘.txt#g' config.yml
sed -i 's#/中国/山东/滨州/邹平/黛溪.md#/中国/华东/邹平/黛溪.md#g' config.yml

ただし、より良い方法はワイルドカードを使用することです

sed -i 's#/中国/.*街道#/中国/华东/街道#g' config.yml

代替

  • . 任意の 1 文字を表します
  • * 文字が 0 回以上出現することを示します

「s#/中国/.*街#/中国/东华/街#g」は、「China/xxxxxx 任意の文字数 xxxxx street」を「China/East China/street」に置き換えることを意味します。


詳細については、coolshell-SED の簡潔なチュートリアル[2]を参照してください。

参考文献

[1]

関連するその他の質問については、https://www.google.com/search?newwindow= 1&rlz=1C5CHFA_enCN758CN758&sxsrf=ACYBGNRgj_G2k3S1PNhmPd8Zzs-Jfyor2g%3A1574328575244&ei=_1jWXeHFDvTXz7sPn_KXWA&q=s を参照してください。 ed%E 5%91%BD%E4%BB%A4+ mac+% E5%8C%BA%E5%88%AB&oq=sed%E5%91%BD%E4%BB%A4+mac+%E5%8C%BA%E5%88%AB&gs_l=psy-ab.3... 295935.300081. .300238...4.2..0.311.2569.0j2j7j1...0....1..gws-wiz....0i71j0i12j0i8i30j33i160.jDax8rOLIAk&ved=0ahUKEwihwfL7_vrlAhX063MBHR_5BQs Q4dUDCAs&uact=5

[2]

Coolshell-SED の簡単なチュートリアル: https://coolshell.cn/articles/9104.html

この記事はmdniceマルチプラットフォームによって公開されています

おすすめ

転載: blog.csdn.net/techdashen/article/details/132910158