这是我的示例输入文件。
ip.txt
:
john math
science
paul math
science
rosy math
jill science
rob math
science
hary math
期望的输出:
john
paul
rosy
jill
rob
hary
当我使用时:
awk '{print $1}' ip.txt
我的输出是:
john
science
paul
science
rosy
jill
rob
science
hary
我不想打印第二列值,我希望将空格打印到文件中。
我怎样才能实现这个目标?我正在使用 Solaris 5.10 和ksh
.
答案1
awk:
awk '{print (NF>1) ? $1 : ""}' file
如果字段数大于 1,则打印第一个字段,否则打印空行。
一些额外的想法:
如果您的数据是制表符分隔的,那么
awk -F '\t' '{print $1}' file
如果你想提取前8个字符
awk '{print substr($0,1,8)}' file
答案2
使用 POSIX sed:
sed -e 's/^\([^[:blank:]]*\)[[:blank:]].*/\1/;t' -ed <file
答案3
如果您想要主题字段之前的所有额外空格,您可以执行以下操作:
grep -o "^[^ ]* \+" ip.txt
如果您不想要额外的空格:
sed 's/ \+.*//' ip.txt
这两者都将保留具有空名称字段的行。