sedはこの行の終わりをどのように置き換えますか?

sedはこの行の終わりをどのように置き換えますか?

この行末を新しいアンパサンド[1-9] \\ \hlineに変えたいです。[1-9] & \\ \hlineデータサンプル

The lorem ... & 1-2 & 3-4 & 5-6 & 6000 & 10000  4 \\ \hline

私が閉じ込められた私の擬似コードは、次のプレースホルダを作成し、いくつかのプレースホルダを作成し、[1-9]いくつかのプレースホルダを作成します。$1$2

sed "s/[1-9] \\\\\\\\ \\\hline/*$/TODO/"

予想出力:

The lorem ... & 1-2 & 3-4 & 5-6 & 6000 & 10000  &4 \\ \hline

オペレーティングシステム:Debian 8.5

答え1

1 つ以上の 10 進数とオプションの水平スペースを一致させ、置換テストで&リテラルと記号の後に再置換するために使用できます。\&

$ echo 'The lorem ... & 1-2 & 3-4 & 5-6 & 6000 & 10000  4 \\ \hline' |
   sed 's/[0-9]\{1,\}[ \t]*\\\\/\&&/'
The lorem ... & 1-2 & 3-4 & 5-6 & 6000 & 10000  &4 \\ \hline

または、少し簡潔に拡張された正規表現を使用してください。

$ echo 'The lorem ... & 1-2 & 3-4 & 5-6 & 6000 & 10000  4 \\ \hline' |
   sed -E 's/[0-9]+\s*\\\\/\&&/'        
The lorem ... & 1-2 & 3-4 & 5-6 & 6000 & 10000  &4 \\ \hline

関連情報