1

行末で終わるパターンを置き換えたいファイルがあります\n...これを行う方法をWebで検索しましたが、どれも機能しません...末尾を置き換えることができます行の末尾を含むパターンではなく、他のものへの行の..

例を次に示します。テキスト ファイルには次の内容があります。

22.0,26235,-48.4,-999,-999,-999,100,22,669.0,-999,669.0
20.0,26860,-47.5,-999,-999,-999,100,21,690.0,-999,690.0
19.3,27096,-47.1,-999,-999,-999,100,21,698.3,-999,698.3
19.0,-999,-999,-999,-999,-999,100,21,-999,-999,

最後の行に値がありません (他の行にある可能性があります) \n-999

したがって、テキストは次のようになります。

22.0,26235,-48.4,-999,-999,-999,100,22,669.0,-999,669.0
20.0,26860,-47.5,-999,-999,-999,100,21,690.0,-999,690.0
19.3,27096,-47.1,-999,-999,-999,100,21,698.3,-999,698.3
19.0,-999,-999,-999,-999,-999,100,21,-999,-999,-999

何か案は ????

4

7 に答える 7

2

awk:

awk 'BEGIN{FS=OFS=","}{if($11==""){$11="-999"};print}' your.file

コマンドは、11 番目の列-999が空の場合に設定します


ユーザーsudo_Oは、同じロジックに従うが、よりきれいに見える上記のスクリプトのバージョンを提案しました。

awk '$11==""{$11=-999}1' FS=, OFS=, your.file 
于 2013-07-22T13:24:59.743 に答える
1

この sed は動作するはずです:

sed -i.bak 's/, *$/&999/' file
于 2013-07-22T13:12:37.117 に答える
0

たぶん、次のような awk 区切り変数を使用できます。

#!/usr/bin/awk -f
BEGIN {
    FS=",";
    OFS=",";
}
{
    if ( $11 == "") {
        print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,"-999"
    } else {
        print $0
    }
}
于 2013-07-22T13:20:03.797 に答える