sed + 各数字の先頭または終了文字を削除する方法

sed + 各数字の先頭または終了文字を削除する方法

.各数字の先頭または末尾から文字を削除する方法は?

注 -perlライナーも良い選択肢ですsed

入力例:

 .23.12.44.5.
 .233.3.3.3
 23.4.5.3.2..
 ....33.2.3.45.5
 .3.3.2.....

予想出力:

 23.12.44.5
 233.3.3.3
 23.4.5.3.2
 33.2.3.45.5
 3.3.2

(行はスペース(スペースまたはタブ)で終わるか開始することができるので、それを維持する必要があります。)

答え1

標準構文の使用(OPでSolarisに言及した後):

sed 's/^\([[:blank:]]*\)\.*/\1/;s/\.*\([[:blank:]]*\)$/\1/'

Solarisでは、いつものように電話をかけたり/usr/xpg4/bin/sedcommand -p sed

答え2

ここにあります:

sed -e 's/^\(\s*\)\.\+/\1/;s/\.\+\s*$//' your_file

これにより、変更されたファイルが標準出力として印刷されます。別のファイルに書き込むには、次のようにします。

sed -e 's/^\(\s*\)\.\+/\1/;s/\.\+\s*$//' your_file >new_file

ファイルを適切に変更するには、次のようにします。

sed -i -e 's/^\(\s*\)\.\+/\1/;s/\.\+\s*$//' your_file

編集する

  • (可能な)先行または末尾のスペースを説明するために正規表現を修正しました。
  • 先行スペースを保存するために、manatworkの説明に基づいて正規表現を修正しました。

答え3

$ cat foo
.23.12.44.5.
 .233.3.3.3
line1
 23.4.5.3.2..
 ....33.2.3.45.5
 .3.3.2.....

line2
$ sed 's/^ *\.*//;s/\.* *$//' foo
23.12.44.5
233.3.3.3
line1
23.4.5.3.2
33.2.3.45.5
3.3.2

line2

関連情報