1

私はパイプで区切られたファイルを持っています。サブIDの「00」で始まる数字を取り除き、残りの数字を同じに保ちたい。例: Karen Calvert50335491| 0020380050335491 |ACTIVE|100|KINGSPORT|KarenCalvert50335491@charter.net|8353/3000|レジデンシャル|FiberNode|テネシー|00:00:00:20:0f:03|EAST|423-343-9250|HSIPLUS|1826 HIGHLAND ST|サービス1|MA|01602

期待されるo/p-

カレン・カルバート50335491| 20380050335491 |ACTIVE|100|KINGSPORT|KarenCalvert50335491@charter.net|8353/3000|レジデンシャル|FiberNode|テネシー|00:00:00:20:0f:03|東|423-343-9250|HSIPLUS|1826 HIGHLAND ST|サービス1|MA|01602

注:このファイルには、「00」で区切られたいくつかの MAC アドレスもあります。

どんな助けでも感謝します。ありがとう

4

3 に答える 3

3

sedの使用:

 sed 's/^\([^|]*\)|0*\([^|]*\)/\1|\2/' input

\1これは、 viaの最初の列を照合、キャプチャ、および保持し、^\([^|]*\)の2番目の列をキャプチャし\2て、先行ゼロのviaをスキップし0*\([^|]*\)ます。次に、一致した部分(列1および2)を、を介してこれらの列のキャプチャされた部分に置き換えます/\1|\2/

于 2012-12-10T06:28:16.613 に答える
2

これはうまくいくかもしれません(GNU sed):

sed -r 's/^([^|]*\|)0+/\1/' file

またはより一般的に:

sed -r 's/^(([^|]*\|){1})0+/\1/' file

この場合1nth -1フィールドはどこですか

于 2012-12-10T12:05:03.557 に答える
1

やれやれだぜ。2 番目のフィールドではなく 7 番目のフィールドを操作する場合は、sed ソリューションを試してください。awkを使用するだけです:

awk 'BEGIN{FS=OFS="|"} {sub(/^0+/,"",$2);print}' file

2 番目ではなく 7 番目のフィールドを変更したい場合は、$2 を $7 に変更するだけです。

于 2012-12-10T14:21:51.410 に答える