web-dev-qa-db-ja.com

最初のスペースの後、sed / awkを使用して何かを削除する

aaaaaaaa 09  
bbbbbbbb 90   
ccccccccccccccc  89  
ddddd 09

上記のテキストのsed/awk/replaceを使用して、各行の最初のスペースの後にあるものをすべて削除します。たとえば、出力は次のようになります。

aaaaaaaa  
bbbbbbbb    
ccccccccccccccc  
ddddd 

任意の助けをいただければ幸いです。

21
Rana Khan

Sed

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

グレップ

grep -o '^\S*'

Awk

awk '{print $1}'

コメントで指摘されているように、-oはPOSIXではありません。しかしGNUとBSDの両方にあるので、ほとんどの人にとってはうまくいくはずです。

また、\s/\Sがすべてのシステムに存在しない場合があります。システムで認識されない場合は、リテラルスペースを使用できます。スペースとタブが必要な場合は、角かっこ式([...])、または[[:blank:]]文字クラス(厳密に言えば、\s[[:space:]]と同等であり、CR、LFと同様に垂直間隔の文字が含まれることに注意してくださいあなたがおそらく気にしないVT)。

awkは、行が空白文字で始まっていないことを前提としています。

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

最も効率的です。

14
awk '{print $1}' file

または

sed 's/ .*//'
5
jlliagre

そしてPerlを介して

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

GNU grep、

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