gpt4 book ai didi

Bash 删除任何不带前导空格的字符

转载 作者:行者123 更新时间:2023-12-02 21:52:26 26 4
gpt4 key购买 nike

我正在尝试获取 bash 变量的尾随空格(以及最终的制表符)。目的是使用外部工具插件在匹配的缩进级别在 gedit 中插入一些代码。

例如,如果字符串如下所示:

'        a string containing multiple spaces and other characters():'

我想要得到以下内容:

'        '

本文中的引号只是为了便于阅读。
bash 有没有一种简单的方法可以做到这一点?

对于任何想了解 gedit 外部工具的人,我使用它来插入 pdb 断点:

#!/bin/sh

foo=$GEDIT_CURRENT_LINE
foo="${foo%%[^ ]*}"
echo -n "
${foo}import pdb
${foo}pdb.set_trace()"

最佳答案

在纯 Bash(或任何 POSIX shell)中,您可以编写,例如:

foo='        a string containing multiple spaces and other characters():'
foo="${foo%%[^ ]*}"
echo "<$foo>" # prints '< >'

( ${<i>parameter</i>%%<i>word</i>} 扩展为 <i>parameter</i> 的值,减去匹配 <i>word</i> 的最长尾随子字符串。在本例中 <i>word</i>[^ ]* ,意思是“任何非空格字符,后跟零或更多字符”,因此与其匹配的最长尾随子字符串是从第一个非空格字符开始的尾随子字符串。有关详细信息,请参阅 §3.5.3 "Shell Parameter Expansion" in the Bash Reference Manual 。)

关于Bash 删除任何不带前导空格的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18343468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com