我正在尝试使用 执行数学运算sed,但它继续将我的变量视为字符串。输入是这样的:
$ echo 12 | sed 's/[0-9]*/&+3/'
$ 12+3
Run Code Online (Sandbox Code Playgroud)
我想要 15 作为输出。我只需要在一个段落中执行操作并替换其数学结果,因为我将程序作为 Python 守护程序运行,并且我想避免像重定向stdout文件、打开这些文件、执行操作、提取结果、执行这样的段落更换。对我来说,sed似乎最好在一行中执行所有操作。
我尝试以各种方式同时投射输入和输出,例如
$ echo 12 | sed 's/[0-9]*/int(&+3)/'
$ echo 12 | sed 's/[0-9]*/\int(&+3)/'
$ echo 12 | sed 's/[0-9]*/\int(&+3)/'
Run Code Online (Sandbox Code Playgroud)
但结果总是打印第二个字段。
我在修改Music/ 目录中的文件名时遇到问题。
我有一个像这样的名字列表:
$ ls
01 American Idiot.mp3
01 Articolo 31 - Domani Smetto.mp3
01 Bohemian rapsody.mp3
01 Eye of the Tiger.mp3
04 Halo.mp3
04 Indietro.mp3
04 You Can't Hurry Love.mp3
05 Beautiful girls.mp3
16 Apologize.mp3
16 Christmas Is All Around.mp3
Adam's song.mp3
A far l'amore comincia tu.mp3
All By My Self.MP3
Always.mp3
Angel.mp3
Run Code Online (Sandbox Code Playgroud)
和类似的,我想删除文件名前面的所有数字(不是扩展名中的 3)。
我首先尝试grep只使用带有find -exec或编号的文件,xargs但即使在第一步我也没有成功。能够之后grep我想做实际的名称更改。
这是我现在尝试过的:
ls > try-expression
grep -E '^[0-9]+' try-expression
Run Code Online (Sandbox Code Playgroud)
通过以上我得到了正确的结果。然后我尝试了下一步:
ls | xargs -0 …Run Code Online (Sandbox Code Playgroud)