0

コマンド ラインからファイルを編集したいのは、vim や他のエディターでファイルを開くのに時間がかかるためです (大きなファイル)。# でコメントアウトされていないすべての行の先頭に文字列 ('chr') を追加したいと考えています。私が使用しているコマンドは次のとおりです。

cat '/home/me/37.vcf' | sed s/^/chr/>'sp.vcf'

ただし、すべての行の先頭に chr を追加し、すべての行の末尾に > を追加します。私はそのどちらも起こらないようにしたい。誰かが私の結果を改善するための提案を提供できますか?

4

3 に答える 3

3

で始まらない行のみに置換を適用するには#:

sed '/^[^#]/s/^/chr/' file > output

注: このコマンドcatはファイルを連結するためのものであり、ここでは役に立ちません。

于 2013-04-02T16:35:02.710 に答える
0

これはうまくいくかもしれません(GNU sed):

sed '/^\s*#/!s/^/chr/' file > new_file
于 2013-04-02T19:01:29.180 に答える
0

sed コマンドで構文エラーが発生する可能性があります。次の構文的に正しい sed コマンドを使用します。

sed -E 's/^([^#]|$)/chr/' /home/me/37.vcf > sp.vcf

または Linux の場合:

sed -r 's/^([^#]|$)/chr/' /home/me/37.vcf > sp.vcf
于 2013-04-02T16:33:58.657 に答える