15 スペースで区切られた文字列(2〜5)の大きなテキストファイルがあります。文字列には「 '」または「-」を含めることができます。2つ目のスペースをパイプに置き換えたいと思います。 行くための最良の方法は何ですか? sedを使用して私はこれについて考えていました: sed -r 's/(^[a-z'-]+ [a-z'-]+\b) /\1|/' filename.txt 他の/より良い/より簡単なアイデア? linux command-line sed awk — DNKB ソース
22 代替コマンドの最後に番号を追加できます。たとえば、次の例では、の2番目の出現箇所をの各行oldの文字列newに置き換えますfile。 sed 's/old/new/2' file したがって、提案されたソリューションの代わりに、以下を使用できます。 sed 's/ /|/2' 詳細については、このsedチュートリアルなどを参照してください。 — mrucci ソース 2 sed情報ファイルから:「注:POSIX標準では、g' and NUMBER modifiers, and currently there is no widely agreed upon meaning across sedの実装を混在させるとどうなるかは指定されていません。GNU `sed 'の場合、相互作用は次のように定義されています:NUMBER番目の前の一致を無視し、すべてを一致させて置換NUMBER番目以降に一致します。」 — 追って通知があるまで一時停止。 情報ファイル...嫌いです。とにかく、あいまいな部分を削除しました。良いコメント、+ 1。 — mrucci 1 ありがとう、mrucciとDennis。そこには単純な何かがあるに違いないと思いました。 — dnkb、 テキスト操作に関して私が抱えているすべての問題のようですが、私は何とか解決していsedます。sedもっと役に立ててくれてありがとうとは思いますが、とにかくそうします。;) — ジェイミー
1 バージョンを試しましたか?うまくいきましたか?基本的にはいい考えだと思うので。ただし、少し異なる方法で行います。 sed -re 's/^([^ ]+ +[^ ]+) /\1|/' これは、スペースではない単語の任意の文字を受け入れ、最初の2つの単語の間に複数のスペースを受け入れます。 — Petersohn ソース
sed
情報ファイルから:「注:POSIX標準では、g' and NUMBER modifiers, and currently there is no widely agreed upon meaning across
sedの実装を混在させるとどうなるかは指定されていません。GNU `sed 'の場合、相互作用は次のように定義されています:NUMBER番目の前の一致を無視し、すべてを一致させて置換NUMBER番目以降に一致します。」