2016-09-17 10 views
1

から、私はいくつかの問題レコードが**でマークされた行(の終わりに-signを持っているものではありませんを特異的に存在するUnixシェルスクリプト削除 - ファイル

job, cost_code, laborcost,materialcost  
202-12-21, 23-94-23, **110.00-**, 120.04  
204-12-21, 23-93-23, 520.00, **120.04-**  
204-12-12, 24-93-23, 155.00, **120.04-** 

含むファイル次の情報を持っています実際にファイルにあります)。

正規表現で - 記号を削除しようとしていますが、問題のあるものだけを一致させるのに問題があります。

+0

'tr'はこれには適していませんが、どこでも' -'を削除または置き換えるためにのみ使用できます。 – tripleee

答えて

0

これを試してみては、このコマンドは、行の終わりにダッシュを削除

sed s'/-$//' 
echo "204-12-21, 23-93-23, 520.00, 120.04-" | sed s'/-$//' 
0

あなたはsedを使用することができます。

sed -i~ 's/\([0-9]\)-,/\1,/g;s/-$//' input.csv 

最初の式が-,に続く数字を検索し、数字で、それを置き換え、コンマ; 2番目の式は行末のダッシュを削除します。

+0

ありがとうございます。ありがとうございます。 – meso

+0

@meso:ありがとうございます= upvote /受け入れます。 – choroba

+0

何らかの理由でコマンドが広告申込情報の最後には機能していないため、さまざまなバリエーションを試しましたが、まだ考えていませんか? – meso

0

これは(GNU SED)あなたのために働くかもしれない:

sed -r 's/-(,|$)/\1/g' file 

は、コンマまたは行の最後のフィールドからのハイフンの前にハイフンを削除します。

関連する問題