Bash 如何使用sed删除字符串中的双空格

Bash 如何使用sed删除字符串中的双空格,bash,shell,awk,sed,grep,Bash,Shell,Awk,Sed,Grep,如何删除文件中特定字符串第22位和第23位的空格 下面的例子和预期结果 XXXSA3FFESS3052599004 L + 预期结果将是: XXXS3DFFESS3052599004L + 我的代码似乎不准确,如下所示。请告知 sed 's/[A-Z0-9] //g' $file 非常感谢你的帮助。我不确定确切的代码。但我的基本理解是sed可以做到这一点 echo 'XXXSA3FFESS3052599004 L +' | sed 's/ *//' 输出: XXXSA3FFE

如何删除文件中特定字符串第22位和第23位的空格

下面的例子和预期结果

XXXSA3FFESS3052599004   L +
预期结果将是:

XXXS3DFFESS3052599004L +
我的代码似乎不准确,如下所示。请告知

sed 's/[A-Z0-9]  //g' $file
非常感谢你的帮助。我不确定确切的代码。但我的基本理解是sed可以做到这一点

echo 'XXXSA3FFESS3052599004   L +' | sed 's/  *//'
输出:

XXXSA3FFESS3052599004L + XXXSA3FFESS3052599004L+
请参阅:

或类似内容:

echo 'XXXSA3FFESS3052599004  L +' | sed 's/.//22;s/.//22'

如果您的空格处于固定位置,那么使用
cut
可能更有意义:

echo 'XXXSA3FFESS3052599004  L +' | cut -c1-21,24-


谢谢cyrus,这很有效,但很抱歉我没有提到。文件中还有其他字符串。它也会影响其他字符串,并使用空格删除它们。它应该与这个特定字符串的模式相匹配。试试这个:
sed-r的/^(.{21})+(.*)/\1\2/'
@Cyrus不需要
(.*)或
\2
@123:Good catch.@Neo if
sed's/*/'
(使用文本空格代替-注释编辑器决定将两个连续空格改为一个空格)这不是您所需要的全部,然后编辑您的问题,以显示更具代表性的示例,这样做不会产生所需的输出。如果没有真正具有代表性的输入/输出,我们只是猜测,因此很有可能您会得到一个比可能更复杂或更脆弱的解决方案。您认为该代码会如何做到这一点?谢谢@liborm。感谢您的评论。
echo 'XXXSA3FFESS3052599004  L +' | cut --complement -c22,23