sedコマンドラインを使用して列からパターンを削除する方法は?

sedコマンドラインを使用して列からパターンを削除する方法は?

以下の表があります。

"baseMean"  "log2FoldChange"    "lfcSE" "stat"  "pvalue"    "padj"
"ENSG00000000003.14"    11.3434183210348    0.753849141787545   0.682104979689654   1.10518052826785    0.269081372382168   0.999928163137131
"ENSG00000000419.12"    793.733816508413    -0.256066185652526  0.133681398896401   -1.91549600592503   0.0554292780227467  0.863889514659372
"ENSG00000000457.13"    948.240987147508    -0.088027064401221  0.0869481579436567  -1.01240861776811   0.3113427195966

.X最初の列の引用符とパターンを削除したいです。私の言葉はこれです:

"baseMean"  "log2FoldChange"    "lfcSE" "stat"  "pvalue"    "padj"
ENSG00000000003 11.3434183210348    0.753849141787545   0.682104979689654   1.10518052826785    0.269081372382168   0.999928163137131
ENSG00000000419 793.733816508413    -0.256066185652526  0.133681398896401   -1.91549600592503   0.0554292780227467  0.863889514659372
ENSG00000000457 948.240987147508    -0.088027064401221  0.0869481579436567  -1.01240861776811   0.3113427195966

このような場合、sedや他の手段を使用してコマンドラインを作成できますか?

ベストアンサー1

使用sed:

$ echo \"ENSG00000009694.13\" 3.25851232080741 0.670268379884225 | sed -E "s|\"(.+?)\.[0-9]*\"|\1|g"
ENSG00000009694 3.25851232080741 0.670268379884225

私はあなたが扱っているのが巨大なログファイルだと思います。この場合、以下を使用できます。

$ sed -E "s|\"(.+?)\.[0-9]*\"|\1|g" your_file.txt
"baseMean"  "log2FoldChange"    "lfcSE" "stat"  "pvalue"    "padj"
ENSG00000000003    11.3434183210348    0.753849141787545   0.682104979689654   1.10518052826785    0.269081372382168   0.999928163137131

sed結果を印刷します。 「内部モード」を示すために-i前に-E。を追加することもできるので、sedはファイルを直接変更します。-i

説明する:

私はsedの「検索と置換」機能を使用しています。基本的な構文は次のとおりです。

sed -E "s|p1|p2|g"

その後、 sed は「拡張正規表現パターン」を意味する . を置き換えるので、複雑なp1正規表現になります。p2-Ep1

ここに私のものp1(今は省略)

\".+?\.[0-9]*\"

~へ

  • \"引用符の一致、
  • \.[0-9]*Macesパターンはドットで始まり、その後に0から無限大までの数字が続きます。
  • .+?その間にどのようなパターンで作業してください。

thenはp2、単に\1ペアの最初の文字列を表すaです。完成!()p1

おすすめ記事