これは私のコードです:行の先頭にルビーの一致文字列またはスペース/タブおよびファイルにuniqの行を挿入
File.open(file_name) do |file|
file.each_line do |line|;
if line =~ (/SAPK/) || (line =~ /^\t/ and tabs == true) || (line =~ /^/and spaces == true)
file = File.open("./1.log", "a"); puts "found a line #{line}"; file.write("#{line}".lstrip!)
end
end
end
File.open("./2.log", "a") { |file| file.puts File.readlines("./1.log").uniq }
私は特定に一致するすべての行を挿入したいです文字列、タブで始めるか、スペースで始まるファイル
1.log
、すべての行にスペース/タブが付いているはずですので、最初に削除しました。私は
1.log
でユニークな行を取得し、いくつかは、コードの上に行くと何かが正しくない場合は私に言うことができればそれは素晴らしいことだろう2.log
にそれらを書きたいと思います。
Rubyでファイルを使用する場合、
w+
とa
モードの違いは何ですか?w+ - Create an empty file for both reading and writing.
a - Append to a file.The file is created if it does not exist.
をしかし、両方のオプションは、ファイルに追加、私も
w+
ではなく>>
の、>
のように振る舞う必要がありますので、私は>>またw+
を推測好き:
は、私が知っていますか?
ありがとうございます!
メモとして、 'x == true'は必要ありません。 'x'が真であれば、' x'を単独で使うことができます。同様に '"#{x} "'は無駄です。 'line.lstrip! 'のように' x'を使うだけです。 – tadman
'tabs'と' spaces'は、あなたが示したコードを実行する前に初期化されたローカル変数、またはメソッドです。正しい? –
@CarySwovelandいいえ私はそれらを定義しませんでしたが、私はルビーがそれらを取る場所からわかりません – Berlin