この仕事をロバストに行うには、文字列操作でawkを使用してください。これらの入力ファイルを考える:
$ cat file1
#export PATH="$HOME/.rbenv/bin:$PATH"
#eval "$(rbenv init -)"
$ cat file2
This is what I'm trying to uncomment:
#export PATH="$HOME/.rbenv/bin:$PATH"
#eval "$(rbenv init -)"
So I did my research and found this command that does what I'm looking for
これはあなたが必要とするすべてである:
$ awk 'NR==FNR{a[$0];next} $0 in a{sub(/./,"")} 1' file1 file2
This is what I'm trying to uncomment:
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
So I did my research and found this command that does what I'm looking for
またはターゲット文字列が、行全体として常に代わりのミッドラインを表示される可能性の場合:
$ awk 'NR==FNR{a[$0];next} {for (i in a) if (s=index($0,i)) $0=substr($0,1,s-1) substr($0,s+1)} 1' file1 file2
This is what I'm trying to uncomment:
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
So I did my research and found this command that does what I'm looking for
上記は、ターゲット文字列に含まれる文字に関係なく機能します。
「」は、コメントを外したい行(と*のみ*の行)と一致する正規表現のプレースホルダです。残念ながら、その表現がどんなものであるべきかを言うのは難しいです。表示されている2行にはあまり共通点がなく、一致させたくない他の行がファイル内に表示されることはありません。 '/ /'を数値範囲( '6,7 'など)に置き換えて、コメントを外したい行番号と一致させる方が簡単かもしれません。 –
chepner
ええ、私は ''について知っています。また、1つのコマンドで両方の行のコメントを解除する必要はありません。 –
PoVa
最後の文章について、あなたは何をしようとしましたか?あなたはそれが働くように見えなかったという意味ですか?それは、必要な行のコメントを外したか、そうしなかったかのどちらかです。 – chepner