linux – テキストファイルの各行で n 番目の文字列を置換する

awk command-line linux sed

スペースで区切られた文字列(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


タイトルとURLをコピーしました