Linuxのパイプで区切られたファイルでは、パイプ5の後の00をスペースに置き換える必要があります。

Linuxのパイプで区切られたファイルでは、パイプ5の後の00をスペースに置き換える必要があります。

00パイプで区切られたファイルでスペースを置き換える必要がありますが、5番目のパイプの後に表示される場合にのみ可能です00。私はLinuxを使用しています。私は試した:{sed 's/00/\ /6' input.txt > output.txt}

サンプル:

FIELD1|FIELD2|FIELD3|FIELD4|FIELD5|FIELD6
ABC|DE|GGH|Y|FFHT|00
ABC|DE|GGH|00|FFHT|Y
ABC|DE|GGH|N|FFHT|N
ABC|DE|GGH|OO|FFHT|

私は次の結果が欲しい:

FIELD1|FIELD2|FIELD3|FIELD4|FIELD5|FIELD6
ABC|DE|GGH|Y|FFHT|  
ABC|DE|GGH|00|FFHJ|Y
ABC|DE|GGH|N|FFHK|N
ABC|DE|GGH|OO|FFHU|  

答え1

提供した例では、必要なものは次のとおりです。

$ sed 's/|00$/|/' file
FIELD1|FIELD2|FIELD3|FIELD4|FIELD5|FIELD6
ABC|DE|GGH|Y|FFHT|
ABC|DE|GGH|00|FFHT|Y
ABC|DE|GGH|N|FFHT|N
ABC|DE|GGH|OO|FFHT|

または、6つ以上のフィールド入力に対してより強力で柔軟です。

$ awk 'BEGIN{FS=OFS="|"} $6=="00"{$6=""} 1' file
FIELD1|FIELD2|FIELD3|FIELD4|FIELD5|FIELD6
ABC|DE|GGH|Y|FFHT|
ABC|DE|GGH|00|FFHT|Y
ABC|DE|GGH|N|FFHT|N
ABC|DE|GGH|OO|FFHT|

答え2

使用幸せ(以前のPerl_6)

raku -pe 's:pos($/.from)/ \| 00 /| / if m:5th/ \| /;'  

または

raku -pe 's:pos($/.from)[ \| 00 ] = "| " if m:5th[ \| ];'  

入力例:

FIELD1|FIELD2|FIELD3|FIELD4|FIELD5|FIELD6
ABC|DE|GGH|Y|FFHT|00
ABC|DE|GGH|00|FFHT|Y
ABC|DE|GGH|N|FFHT|N
ABC|DE|GGH|OO|FFHT|

出力例:

FIELD1|FIELD2|FIELD3|FIELD4|FIELD5|FIELD6
ABC|DE|GGH|Y|FFHT| 
ABC|DE|GGH|00|FFHT|Y
ABC|DE|GGH|N|FFHT|N
ABC|DE|GGH|OO|FFHT|

Rakuは、:nth検索したい一致(たとえば、、、など:1st:2ndを指定できる「副詞」正規表現パラメータを実装します。:nth(5)

上記のRakuコードは、位置m:5th|パイプ文字検出)の一致と置換項目を組み合わせて、s:pos($/.from)一致変数の位置で一致検索を開始します。$/.from

したがって、5番目と一致すると、|その場所がに保存されます$/.from\| 00その場所で$/.from正規表現を見つけたら空白に置き換えます。それ以外の場合は、2番目のデータ行の3番目の文字の後に表示される00ように、文字は変更されずにそのまま残ります。|

[注:「初期」列をすべて変更せずにそのままにして「後で」列のみを変更するには、副詞の代わり:continue:pos副詞を使用してください。]

https://docs.raku.org/言語/regexes#index-entry-matching_adverb_:pos-matching_adverb_:p-Pos
https://raku.org

答え3

sed "s/\(\(.*|\)\{5\}[^0]*\)00/\1 /" <input.txt

意味: \(\(.*|\)\{5\}: スラッシュ5個

[^0]*5番目のスラッシュ以降はゼロではありません。

all to \1 は \1 と 2 つの 0 を印刷します。

入力例:

FIELD1|FIELD2|FIELD3|FIELD4|FIELD5|FIELD6
ABC|DE|GGH|Y|FFHT|rZZ00r
ABC|DE|GGH|00|FFHT|Y
ABC|DE|GGH|N|FFHT|N
ABC|DE|GGH|OO|FFHT|

出力例:

FIELD1|FIELD2|FIELD3|FIELD4|FIELD5|FIELD6
ABC|DE|GGH|Y|FFHT|rZZ  r
ABC|DE|GGH|00|FFHT|Y
ABC|DE|GGH|N|FFHT|N
ABC|DE|GGH|OO|FFHT|

関連情報