tr -d はキャリッジリターンでは動作しません。

tr -d はキャリッジリターンでは動作しません。

変数から\ nを削除したいです。 「tr -dを使う」という回答をたくさん見つけましたが、うまくいきませんtr -dでした。

echo "$test" | od -c
0000000   4   4   2   5   2  \n
0000006

その後、使用します。tr -d

test2=$(echo $test | tr -d '\n')

しかし何も変わらなかった

echo "$test2" | od -c
0000000   4   4   2   5   2  \n
0000006

答え1

を使用すると、期待どおり(改行文字など)tr -d '\n'が削除されます。\nしかし、echoコマンドを使用してこれを確認しています。Echoコマンド自体は入力文字列の末尾に改行文字を入れるため、期待される出力は表示されません。

変数を確認するには、次のコマンドセットを使用します。

test2=$(echo "$test" | tr -d '\n')
printf "%s" $test2 | od -c
echo -n $test2 | od -c

スクリプト出力:

0000000   h   e   l   l   o
0000005
0000000   h   e   l   l   o
0000005

注:echo -n:echoのマニュアルページでは、-nは末尾の改行を出力しません。 printf:最後に \n を追加しません。

答え2

echo\nデフォルトは追加です。-n省略に使用

[6]root@lab7:~> echo 'lol' |od -c
0000000   l   o   l  \n
0000004
[6]root@lab7:~> echo -n 'lol' |od -c
0000000   l   o   l
0000003

関連情報