打印以空格分隔的多个单词

打印以空格分隔的多个单词

我有一个文本文件,里面的数据格式如下(名称年龄国家):

michael jordans 25 US
adam smith 30 UK
chris wood ABC 22 Aus

如果我使用命令:cat text.txt | awk {'print $1'}-->它将打印:

michael
adam
chris

但我想打印全名:

michael jordans
adam smith
chris wood ABC

我应该使用哪个命令?

我们可以更改格式数据,例如:

michael jordans|25|US
adam smith|30|UK
chris wood ABC|22|Aus

答案1

sed 's/^\([^0-9]*\).*/\1/' text.tex

这假设名称不包含数字字符,并且名称后面的字段以数字开头。

当您用 分隔字段时|,可以通过以下方式完成

sed 's/^\([^|]*\).*/\1/' text.tex

或者如果你喜欢 awk,你可以这样做

awk -F\| '{print $1}' text.tex

答案2

如果您将文件更改为具有正确的字段分隔符,例如|,则解决方案很简单:

awk -F'|' '{print $1}' input_file

如果您使用空白(也出现在预期字段中)而不是正确的字段分隔符,那么您可以执行以下操作:

 awk '{ a = $1; for (i=2; i <= NF-2; i++) a = a " " $i; print a; }' input_file

相关内容