
私の行nextermCensus.lis
には改行文字が含まれています。私は最初の行だけに興味があります。改行文字を削除したいです。しかし、うまくいきません。したがって、2番目の方法を使用して削除する必要があります。 $(echo $census_day | tr -d '\n')
期待どおりに動作します。しかし、私は一行にするのが大好きです。
census_day=`head -1 /dr4/home/operbat/batches/nextermCensus.lis | tr -d '\n'`
census_day=$(echo $census_day | tr -d '\n')
答え1
注文する:
bla=`head -1 filename`
改行が削除されました。このecho
コマンドは改行文字を再追加します。
努力する:
echo "$bla\c"
(POSIX互換エコーを使用している場合)が表示されます$bla
。
答え2
デフォルトでは、末尾のecho
改行文字は印刷する文字列または変数に追加されます。最初のコマンドは完全に機能します。そこに改行文字はありません。コマンドの置き換え(`...`
またはそれに対応する最新のコマンド$(...)
)は、すべての末尾の改行文字を削除します。変数を使用しようとした場合にのみ追加されますecho
。
たとえば、次のファイルが提供されます。
$ cat foo.txt
a
b
c
以下を使用して、改行文字を除く最初の行を保存できますhead
。
$ census_day=`head -n 1 foo.txt`
これでこれを行うと改行文字が表示されますが、または(これをサポートするsの場合)をecho
使用すると、次のような内容は表示されません。 printf
echo -n
echo
$ printf %s "$census_day" | od -tc
0000000 a
0000001