スペースで区切られた文字列(2-5)を持つ大きなテキストファイルを持っています。文字列には”‘や”-“を含むことができます。2つ目のスペースをパイプに置き換えたいと思います
何が一番いいのかな?
sedを使ってこんなことを考えていました
sed -r 's/(^[a-z'-]+ [a-z'-]+\b) /\1|/' filename.txt
他に何かいいアイデアはありませんか?
17 dnkb 2010-05-20
ベストアンサー
置換コマンドの最後に数字をつけることができます。例えば、次のようにすると、old
の2番目に出現した部分をfile
の各行にある文字列new
で置換します
sed 's/old/new/2' file
そこで、あなたが提案した解決策の代わりに
sed 's/ /|/2'
詳細については、この sed チュートリアルなどを参照してください
25 mrucci 2010-05-20
あなたのバージョンを試してみましたか?うまくいきましたか?基本的には良いアイデアだと思うからです。私なら少し違うことをすると思いますが
sed -re 's/^([^ ]+ +[^ ]+) /\1|/'
これは、スペースではない単語の中の任意の文字を受け入れ、最初の2つの単語の間に1つ以上のスペースを受け入れます
1 petersohn 2010-05-20