2011-07-29 3 views
1

タブ区切りファイルのフィールド内の任意の文字列の最初の文字のみを保持するのに役立ちます。は、タブ区切りファイルの任意のフィールドに文字列の最初の文字を保持するだけです。

私はsedがこの仕事をすることができると思います。私は試しましたが、失敗しました。私はあなたの助言と指示を期待しています。

ありがとうございます。

ダミー例:私が欲しいもの

MY_FILE、(タブ区切り)

1 11656 TCAG . TCAG TCAG . TCAG TCAG TCAG 
1 11660 CT . CT CT . CT CT CT 
1 11662 ATGG . ATGG ATGG . ATGG ATGG ATGG 
1 11680 A . A A . A A A 
1 11732 C . C C . C C T 
1 11742 T . T C . T T T 

:私がテストし

1 11656 T . T T . T T T 
1 11660 C . C C . C C C 
1 11662 A . A A . A A A 
1 11680 A . A A . A A A 
1 11732 C . C C . C C T 
1 11742 T . T C . T T T 

はコード:

# (1) workable for only one string 
echo abcd123 | sed 's/\([a-z]\).*/\1/' 
# (2) not work for my data file 
sed 's/\([a-z]\).*/\1/' my_file 
sed 's/\([a-z]\).*/\1/g' my_file 

答えて

2

マニーのソリューションが、もう少し一般的な

sed 's/\([A-Z]\)[A-Z]*/\1/g' my_file 
+0

親愛なるデュアン、ありがとうございました。 –

3

はこれを試してみてください:

sed 's/\([ATGC]\)[ATGC]*/\1/g' my_file 

もちろん、ATGC以上で作業している場合は、両方の文字セットを展開してください。

.*を使用した場合の問題は、変更されたシーケンスの最初のオカレンスのみを置き換えて、すべての文字を行の末尾に置きます。 2番目の[ATGC]を使用することで、検索文字列をそのシーケンスだけに限定します。

+0

親愛なるマニーD、おかげであなたの親切な補正と説明のためにたくさん。 –

関連する問題