文字列内の最初の既知の文字をsedで削除します


12

文字列内の最初の既知の文字をsedで削除するにはどうすればよいですか?

たとえば、文字列 "@ ABCDEFG1234"の最初の文字(@)を削除したいとします。

最初の文字として「@」が存在するかどうかを確認したいのですが。もしそうなら、それは文字を削除する必要があります。

回答:


10

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

^ 文字列の始まりを意味します

@ あなたの既知の文字

(.*) 残りは捕獲された

キャプチャされたブロックは出力に置き換えられます申し訳ありませんが、現時点ではテストできませんが、そのようなものでなければなりません


18

キャプチャして交換する必要はありません。

sed 's/^@//'

これは、文字列@の最初^の文字を何も置き換えません。したがって、それを削除します。


0

代わりにこれを行うことができます。

sed 's /^.//'

^ - Starting character 
. - No of charactes(.. means two characters)

例:

echo test123 | sed 's/^.//'
est123
echo test123 | sed 's/^..//'
st123

1
質問は、「最初の文字として「@」が存在するかどうかをsedで確認したいのです。その場合は、キャラクターを削除する必要があります。」あなたの答えは、それが何であるかにかかわらず、各行の最初の文字を削除します。たとえば、行にが含まれている場合test123、OPはそれをそのままにしておきたいように見えます。
スコット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.