gpt4 book ai didi

Bash 删除任何没有前导空格的字符

转载 作者:行者123 更新时间:2023-12-02 04:53:53 28 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/

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