sed パターンマッチングと行削除

sed パターンマッチングと行削除

最後の一部のスペース(例:4)を削除したいです。line$#*425 with space

完了できません。

echo "line$#*425 with space          " | sed 's/ /\1 \2/g'

私も使ってみようかと思っていますが、od -bまだよくわかりません。

私は何をすべきですか?

ノート:スペースは通常の ""またはタブ文字です。

編集する:以下の回答を確認するためにテストを行った方法です。

[root@testgfs2 test]$echo -e "line$#*425 with space \t     "  | sed 's/[[:blank:]]\{4\}$//' | od -b
0000000 154 151 156 145 060 052 064 062 065 040 167 151 164 150 040 163
0000020 160 141 143 145 040 011 040 012
0000030

削除は、空白の単語の後ではなく、行末で発生します。タブ(011)まだそこにいます。

答え1

あなたのコード例があなたの質問と一致しないようです。あなたのコード例はグループ化されていないので、何も引用しないで\1ください\2。これはあなたが求めるものと同じです。

sed 's/space[[:blank:]]\{4\}/space/' <<< "line$#*425 with space          "

答え2

維持したい部分をグループに配置します。正規表現で引用する必要がある文字()を引用することを忘れないでください\[.*^$

sed -e 's/\(line\$#\*425 with space\)[ \t][ \t][ \t][ \t]/\1/'

sed が\tタブ表示をサポートしていない場合は、\tリテラルタブに置き換えます。

関連情報