我有一个文本文件,里面的数据格式如下(名称年龄国家):
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