awkで2つの文字列を連結しようとしています。そのうちの一つが「\ rを」を含んでいるようだ:awkのエスケープ文字を削除するには?
Hillo
で
stringA = "Hello\r"
stringB = "Hi"
print stringA stringB
結果
私はstringAのソースを変更できない場合は「\ r」を削除するには何ができますか?
感謝:)
awkで2つの文字列を連結しようとしています。そのうちの一つが「\ rを」を含んでいるようだ:awkのエスケープ文字を削除するには?
Hillo
で
stringA = "Hello\r"
stringB = "Hi"
print stringA stringB
結果
私はstringAのソースを変更できない場合は「\ r」を削除するには何ができますか?
感謝:)
は考える:
$ awk 'BEGIN {s1="Hello\r"; s2="Hi"; print s1 s2}'
Hillo
ちょうどキャリッジリターン\r
gsub()
と交換してください:ある
$ awk 'BEGIN {s1="Hello\r"; s2="Hi"; gsub(/\r$/,"",s1); print s1 s2}'
HelloHi
を、gsub(/\r$/,"",s1)
は、文字列の末尾に\r
を探しますs1
を入力し、""
に置き換えます。つまり、remoそれを守る。
複数のキャリッジリターンが表示された場合は、$
を取り除くだけで、行の末尾に一致するようになります。
Ed Mortonは、おそらく1つのキャリッジリターンが文字列に表示されることを示唆しています。これはかなり合理的です。その場合はsub(/\r$/,"",s1)
の代わりにsub()
を使用してください。
ありがとう、たくさん助けました:) –
野生の推測 - 文字列Aは、ファイルの内容を読み込むことによって読み込まれています。そうであれば、入力ファイルでdos2unixなどを実行してからawkを実行するか、gawkを使用している場合は 'RS = '\ r?\ n" 'を設定するか、' sub(/ \ r /、 "") 'を入力してください。 –