1 次のsed構文@は、文字列に最初の文字が存在する場合、最初の文字を削除します。 sed 's/^@\(.*\)/\1/' しかし@、3番目の位置にある場合にのみ文字を削除するように変更するにはどうすればよいですか?たとえば、次の行で削除する必要があります。 AB@CDEF 3番目の文字が@であるかどうかを確認し、そうであれば、行から削除するスクリプトが必要です。 regex sed — ヤエル ソース
2 使用できます sed 's/^\(..\)@\(.*\)/\1\2/' — イェンス ソース 非常に多くのTHX yael — yael 行の残りは必要ありません。s/ ^ \(.. \)@ / \ 1 'で十分です。 — アキラ
1 任意の位置の任意の文字を一般化するにはn: sed 's/^\(.\{2\}\)./\1/' 3番目の文字が削除されます。番号「2」をに変更するだけn-1です。 次のような変数を使用できます。 n=2 echo "$line" | sed "s/^\(.\{${n}\}\)./\1/" — デニス・ウィリアムソン ソース