810631 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

さすらいのプログラマ

PR

Keyword Search

▼キーワード検索

Profile


xyzzy_user

Calendar

Comments

hello@ Re:HFONTからLOGFONT(06/02) タイプミス NG) "LOGONT lfont;&quo…
scripting guy@ ゼロサプレス、ゼロ桁の切り出し、文字列の長さについて ゼロサプレス、ゼロ桁の切り出し、文字列…
scripting guy@ ゼロサプレス、ゼロ桁の切り出し、文字列の長さについて ゼロサプレス、ゼロ桁の切り出し、文字列…
scripting guy@ ゼロサプレス、ゼロ桁の切り出し、文字列の長さについて ゼロサプレス、ゼロ桁の切り出し、文字列…
junche4@ Re:VBScriptのRegExp(その2)(04/13) where is vbscript.h?

Freepage List

2011/11/16
XML
カテゴリ:シェル
タブ区切りのファイルに3列目の前に1列(空)を追加しようとした場合、

sed -e 's/^\([^\t]*\t[^\t]*\t\)/\1\t/' xxxxx.dat

と書けるが、10列目の前の場合に同様に書くのはしんどい。

グルーピングの繰り返しを使えば、簡単に書ける。

sed -e 's/^\([^\t]*\t\)\{9\}/\1\t/' xxxxx.dat

これだと、参照先は9個目の列となるので正しく置き換えられない。

グルーピングをさらにグルーピングすると

sed -e 's/^\(\([^\t]*\t\)\{9\}\)/\1\t/' xxxxx.dat

正しく置き換えられる。
注意点としては、\2も繰り返しの最後のマッチ部分と参照できるので
他にもグルーピング指定している場合は、\3以降となる。

おそるべし、sed (正規表現?)







Last updated  2011/11/16 12:45:39 PM
コメント(0) | コメントを書く
[シェル] カテゴリの最新記事

Copyright (c) 1997-2019 Rakuten, Inc. All Rights Reserved.