help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Emacs: adding 1 to every number made of 2 digits inside a marked reg


From: Arthur Miller
Subject: Re: Emacs: adding 1 to every number made of 2 digits inside a marked region.
Date: Mon, 27 Sep 2021 16:08:33 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

Arthur Miller <arthur.miller@live.com> writes:

> Michael Heerdegen <michael_heerdegen@web.de> writes:
>
>> Hongyi Zhao <hongyi.zhao@gmail.com> writes:
>>
>>> Imagine I've got the following in a text file opened under Emacs:
>>>
>>> some    34
>>> word    30
>>> another 38
>>> thing   59
>>> to      39
>>> say     10
>>> here    47
>>>
>>> and I want to turn into this, adding 1 to every number made of 2 digits:
>>>
>>> some    35
>>> word    31
>>> another 39
>>> thing   60
>>> to      40
>>> say     11
>>> here    48
>>
>> You might want to give Calc a try for such things.  It doesn't perfectly
>> handle the editing part though since it doesn't know about rectangle
>> commands (AFAICT - at least for insertion).
>>
>> So here is how I would do it:
>>
>> - mark the rectangular region spanning the numbers
>> - `C-x * r': this will grab the number column as a matrix and pop up
>>   Calc
>> - `1 RET +': will add 1 to all entries
>>
>> You now have the result as a matrix.  What you have to do now manually
>> using conventional rectangle commands is to kill the original numbers
>> from the buffer (they are already marked, so `C-x r k'), and then kill
>> and yank the numbers as rectangle from the Calc buffer.
>>
>> Calc also allows to add numbers in a row or column in any buffer in a
>> similarly easy way.  The Calc tutorial has some examples doing such
>> things.
>>
>> Michael.
>
> And I was of course wrong :-)
>
> And sent mail again by misstake ... :-)
>
> Time for the sleep

With some help from the reddit:

| some    | 34 | 35 |
| word    | 30 | 31 |
| another | 38 | 39 |
| thing   | 59 | 60 |
| to      | 39 | 40 |
| say     | 10 | 11 |
| here    | 47 | 48 |
#+TBLFM: $3='(1+ '$2);N

It was even easier than I thought :).



reply via email to

[Prev in Thread] Current Thread [Next in Thread]