sedコマンドを使用して、行の最初の3文字以外はすべて削除するにはどうすればよいですか?たとえば、次のように行:sedコマンドを使って、行の最初の3文字を除くすべての文字を削除するにはどうすればよいですか?
水曜日が
これはトリックを行います
水
sed -i -e 's/Ive tried everything, but the right thing//g' $HOME/filename
sedコマンドを使用して、行の最初の3文字以外はすべて削除するにはどうすればよいですか?たとえば、次のように行:sedコマンドを使って、行の最初の3文字を除くすべての文字を削除するにはどうすればよいですか?
水曜日が
これはトリックを行います
水
sed -i -e 's/Ive tried everything, but the right thing//g' $HOME/filename
は、GNUはは、この目的のために特別なフラグを有しているのsed。
になる必要があります。
sed -re 's/^(...).*$/\1/'
^
は、行の先頭に一致します。(...)
は3文字に一致し、グループ#1に配置されます。.*$
は、行の最後まですべて一致します。\1
は、グループ#1の内容です。グループを使用するには、-r
/--regexp-extended
オプションが必要です。
sed -e 's/.//4g'
4
、ここで置換するパターンの第四の出現から開始するように指示sed
:
ありがとうございました!あなたの答え/例は、私がそれをテストしたときにうまくいった。私は* sed -e 's ///// 4g' *といっているのはそれがより短いからです。 – XXX
@XXXようこそ。これが唯一の操作であれば、 'sed'は少し過度のものであり、' cut -c 1-3'や 'grep -o^...'がより適している(とPOSIXに優しい)。しかし、おそらく '--in-place'オプションが欠けているでしょう。 – xhienne