使用 sed/awk 删除第一个空格后的任何内容

使用 sed/awk 删除第一个空格后的任何内容
aaaaaaaa 09  
bbbbbbbb 90   
ccccccccccccccc  89  
ddddd 09

使用 sed/awk/replace,在上面的文本中我想删除每行第一个空格后面的任何内容。例如,输出将是:

aaaaaaaa  
bbbbbbbb    
ccccccccccccccc  
ddddd 

任何帮助将不胜感激。

答案1

塞德

sed 's/\s.*$//'

格雷普

grep -o '^\S*'

awk

awk '{print $1}'

正如评论中指出的,-o这不是 POSIX;然而 GNU 和 BSD 都有它,所以它应该适用于大多数人。

另外,\s/\S可能并非在所有系统上都存在,如果您的系统无法识别它,您可以使用文字空格,或者如果您需要空格和制表符,则可以使用方括号表达式 ( [...]) 中的那些或[[:blank:]]字符类(请注意,严格来说\s是相当于[[:space:]]并包括垂直间距字符以及您可能不关心的 CR、LF 或 VT)。

假设awk 行不以空白字符开头。

答案2

cut -d ' ' -f 1 < your-file

将是最有效的。

答案3

awk '{print $1}' file

或者

sed 's/ .*//'

答案4

而那一个经过perl

$ perl -pe 's/^([^ ]+) .*$/\1/' file
aaaaaaaa
bbbbbbbb
ccccccccccccccc
ddddd

通过 GNU grep,

$ grep -oP '^[^ ]*' file
bbbbbbbb
ccccccccccccccc
ddddd

相关内容