0

変数に次のようなファイルがあります(としましょう${var_file}):

ABC+123+456+789+12'\r
DEF+987+98790+12+00'\r
GHI+12+12?+39+123498345+21+1'\r
ABC+485+2?'\r
ABC+34?+8kj+3949+1+sdfkj+sdfkj'\r
GHC+++sdf'\r
ABC+123++235+5435'\r

$var1また、INT 形式の数値と行頭を含む変数もあります$var2

bash スクリプトの一部となる sed コマンド (または awk/cut?) または関数が必要です。これは、ファイル上でグローバルに (すべての可能な行に対して) 行頭(または など) の区切り記号$var1間の位置を置き換えます。,はエスケープ文字である可能性もあるため、この場合は区切り文字として機能せず、通常のテキストです。行は常に、選択された行の開始で定義されたカウントを含むのに十分な長さである必要があります。+$var2ABCABC+123?+?++$var1$var2

( )で始まる行の 3 番目 ( $var1 = "3"、3 番目と 4 番目の間)の出力例+ABC+123$var2 = "ABC+123"

したがって、出力は次のようになります。

ABC+123+456++12'\r
DEF+987+98790+12+00'\r
GHI+12+12?+39+123498345+21+1'\r
ABC+485+2?'\r
ABC+34?+8kj+3949+1+sdfkj+sdfkj'\r
GHC+++sdf'\r
ABC+123+++5435'\r

変更は1行目と7行目です。

( $var1 = "3") で始まる行の 3 番目の位置 ( ) だけを削除する場合:ABC$var2 = "ABC"

ABC+123+456++12'\r
DEF+987+98790+12+00'\r
GHI+12+12?+39+123498345+21+1'\r
ABC+485+2?'\r
ABC+34?+8kj+3949++sdfkj+sdfkj'\r
GHC+++sdf'\r
ABC+123+++5435'\r

変更は 1、5、7 行目です。

誰かがこれで私を助けることができますか? さまざまな sed コマンドを試しましたが、解決策が見つかりません..

ありがとうございました!

4

2 に答える 2