1

CSV ファイルがあり、特定の値を含まない行を除外する必要があります。このため、私はそれらの行を気にせず、それらを削除するか、コマンドの結果を新しい csv ファイルに入れたいと考えています。

これは私のCSVファイルの形式です:

employeeid,time,homephone,workphone,ssn,insurance,address,state,salary,position,rank,boss,hiredate

現在、これらのフィールドの一部に情報がない行がいくつかあります。awk または sec コマンドを実行して csv ファイル内のすべての行を読み取り、フィールドが null でない行だけを別のファイルに入れるにはどうすればよいですか? ,,または、everyを のような単語に置き換えることは可能でしょうnotthereか? ここで単語の置き換えが行われていますが、これは 100% 機能しているわけではありません。

これまでのところ、次のようなものがあります。

sed -e 's/^,/notthere,/' old.csv > new.csv

これは、私が探していることはほとんど何もしません。誰かが私を助けてくれれば幸いです。Linux コマンドの使用経験はまったくありません。

ありがとうございました!

4

4 に答える 4

2

接続されたコンマのファイルをgrepすることもできるようです:

grep -v ',,' somefile.csv > newfile.csv

編集:最初と最後にもチェックしたいフィールドがあることに気付きました。次のように、正規表現を含むものを含めることができます。

grep -vE ',,|^,|,$' somefile.csv > newfile.csv

grep -vは「逆」を意味します。つまり、これらのパターンに一致しないすべての行を出力します: 2 つのコンマを一緒に、行頭にコンマ、行末にコンマ。|here は「または」を意味します。

于 2013-08-01T18:11:29.037 に答える
0

いくつかのサンプル データが役立ちましたが、空のフィールドを持つ行をスキップするためにこれを試してください。

awk -F , '{n=0; for (i=1;i<=NF;i++) if ($i=="") n++} n==0' filename

より読みやすく

awk -F , '{
    empty=0
    for (i=1; i<=NF; i++) {
        if ($i == "") {
            empty++
        }
    }
    if (empty == 0) {
        print
    }
}' filename
于 2013-08-01T18:07:53.050 に答える