Bash 如何使用sed删除字符串中的双空格
如何删除文件中特定字符串第22位和第23位的空格 下面的例子和预期结果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
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 ifsed's/*/'
(使用文本空格代替-注释编辑器决定将两个连续空格改为一个空格)这不是您所需要的全部,然后编辑您的问题,以显示更具代表性的示例,这样做不会产生所需的输出。如果没有真正具有代表性的输入/输出,我们只是猜测,因此很有可能您会得到一个比可能更复杂或更脆弱的解决方案。您认为该代码会如何做到这一点?谢谢@liborm。感谢您的评论。
echo 'XXXSA3FFESS3052599004 L +' | cut --complement -c22,23