2013-03-20 14 views
15

シェルスクリプトを初めて使用しました。私はWindowsで作成されたソースコマンドを使用してファイルを調達しており、それには復帰があります。私はそれにいくつかのcharatersを追加するとき、私はソースを取得した後、それは常に行の先頭に来る。シェルスクリプト内の変数から改行と改行を削除する方法

test.dat (which has carriage return at end) 
testVar=value123 

testScript.sh (sorces above file) 
source test.dat 
echo $testVar got it 

私が手出力は

got it23 

どのように私は変数からは '\ r' を削除することができます。どんな助けでも本当に感謝しています。

答えて

4

使用スクリプトファイルでこのコマンドのLinux/Unixのに

perl -pi -e 's/\r//' scriptfilename 
+0

おかげトンperl'。私は 'dos2unix'をダウンロードできませんでした。' tr'は動作しません。どうもありがとう! –

10

それをコピーした後は、次のようにsedを使用することができます。

MY_NEW_VAR=$(echo $testVar | sed -e 's/\r//g') 
    echo ${MY_NEW_VAR} got it 

EDIT

をところで試しますあなたのデータファイルに "dos2unix"を実行する。

32

さらに別の解決策は、trを使用しています。

echo $testVar | tr -d '\r' 
cat myscript | tr -d '\r' 

deleteの略-dオプションを選択します。キャリッジリターン(\r)とラインフィードの両方を削除するsed -e 's/[\r\n]//g'

2

パイプ(\n)各テキスト行から

+2

sedを使って '\ n'を削除することはできません。 http://sed.sourceforge.net/sedfaq5.html#s5.10を参照してください。 – Bryan

0

純粋なシェル溶液のための外部プログラムを呼び出すことなく、: `ため

NL=$'\n' # define a variable to reference 'newline' 

testVar=${testVar%$NL} # removes trailing 'NL' from string 
関連する問題