我有一个文件,其中包含一个数字,后面跟着大量文件的每行文件路径。所以它看起来像这样:
7653 /home/usr123/file123456
但问题是它之前有6个空白空格,它会抛弃我脚本的其余部分。我在下面列出了产生它的行:
cat temp | uniq -c | sed 's/ */ /g' > temp2
我将其缩小为uniq
命令,产生不必要的空白区域。我试图实现一个sed
命令来删除空格,但由于某种原因它删除除了一个以外的所有空格。如何修改我的sed
语句或我的uniq
语句以摆脱这些空格?任何帮助将不胜感激!
答案 0 :(得分:9)
要删除所有前导空格,请使用:
sed 's/^ *//g'
删除任何类型的所有前导空格:
sed 's/^[[:space:]]*//g'
^
符号仅匹配行的开头。因此,上面将只留下不在行开头的任何空格。
答案 1 :(得分:0)
分解你当前的sed模式的/ * / / g': 搜索模式'*'匹配单个空格,后跟零个或多个空格。替换模式''是一个单独的空间。结果是找到一个或多个空格的任何集合并将其替换为单个空格,因此除去其中一个空格。要使其全部删除,您可以将替换模式设为空字符串'':sed's / * // g'
但请注意,'g'使其成为全局,因此也会删除数字和文件路径之间的空格。如果你只想删除前导空格,你可以放弃g。您也可以使用+量词,这意味着“至少一个”,而不是*,这意味着“至少为零”。 这会让你:sed's / \ + /'
ETA:正如John1024所指出的那样,你也可以使用^ anchor来指定行的开头,并使用\ s通配符来指定任何空格字符而不仅仅是空格:sed's / \ s \ + // “