sedを使用して行から3番目の文字を削除します


1

次のsed構文@は、文字列に最初の文字が存在する場合、最初の文字を削除します。

 sed 's/^@\(.*\)/\1/'

しかし@3番目の位置にある場合にのみ文字を削除するように変更するにはどうすればよいですか?たとえば、次の行で削除する必要があります。

 AB@CDEF

3番目の文字が@であるかどうかを確認し、そうであれば、行から削除するスクリプトが必要です。

回答:


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/"

0
% sed -e '/^..@/ { s,^\(..\)@,\1, }'

手段:

  • 行が3文字で始まる場合、3番目は「@」です
  • @を捨てますが、最初の文字は保持します
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.