CSVファイルがあります。次のようになります。
chr22, Position , A , B , C , D , E
22 , 16050115 , 0|0:404 , 0 , 0 , 0 , 1|1:5
22 ,16050213 ,0|0:403 , 0 , 0 , 0 , 3|4:6
22 , 16050607 , 1|0:340 , 1|1:3, 0 , 0 , 1|1:3
22 16050737 , 0|0:402 , 3|0:4 , 0|7:23 , 0 , 0
22 16050783 , 0|0:404 , 2|2:5 , 0|1:31 , 1|0:51, 0
0|0:404
0|0
はの数を表します404
。0|0
の1|0
値を抽出したいのですが、0|1
出力は次1:1
のようになります。
chr22, Position, A ,B, C ,D, E
22 ,16050115, 0|0:404 ,0 ,0 ,0 ,1|1:5
22 ,16050213, 0|0:403, 0 ,0, 0, 0
22 ,16050607, 1|0:340, 1|1:3, 0 ,0 ,1|1:3
22 ,16050737, 0|0:402, 0 ,0 ,0, 0
22 ,16050783, 0|0:404 ,0 ,0|1:31 ,1|0:51, 0
試してみましたが、 grep -e '0|0:' -e '1|1:' -e '0|1:' -e '1|1 /path/file.csv
うまくいかないようです。
ベストアンサー1
元のコマンドライン
次のコマンドラインは、「問題のある」行をスキップし、コンマ区切りのファイルでこれを行うと思います。
grep -v -e ', *[2-9]|' -e '|[2-9]:' file.csv
小さなファイルも色で確認でき、
grep -v -e ', *[2-9]|' -e '|[2-9]:' file.csv |grep --color '.|.'
見つかった行grep
(前のコマンドラインのオプションから除外された-v
)、
grep -e ', *[2-9]|' -e '|[2-9]:' file.csv |grep --color '.|.'
次のコマンドラインは、タブ区切りのファイルを使用してこれを行います。
grep -v -e '\t[2-9]|' -e '|[2-9]:' Reddy.tab
または、少し緩いチェックが必要な場合は、次のコマンドラインを使用できます。
grep -v -e '[2-9]|' -e '|[2-9]:' Reddy.tab file.csv
OPのコメントに対するコマンドライン応答
以下のコマンドラインは、OPが必要なコンマ区切りファイルとタブ区切りファイルを実行すると思います。
sed -e 's/[2-9]|[0-9]:[0-9]*/NA/' -e 's/[0-9]|[2-9]:[0-9]*/NA/' file.csv