【问题标题】:Truncate trailing characters in Solaris在 Solaris 中截断尾随字符
【发布时间】:2014-07-29 08:13:37
【问题描述】:

我在 Solaris 工作站中有一个文本文件。请参阅下面的文件内容示例(条目数可能会有所不同):

CMSBC01                   TELNET_APG40
CMSBC01_1                 TELNET_APG40
CMSBC03                   TELNET_APG40
CMSBC03_1                 TELNET_APG40
GMSC1                     TELNET_APG40
GMSC2                     SSH_APG40

我只对第一列条目感兴趣。我希望输出是:

CMSBC01  
CMSBC01_1
CMSBC03  
CMSBC03_1
GMSC1    
GMSC2

我试过了

awk -F\;  '{print $1}' /home/els/axelist.txt 

还有:

cat axelist.txt | sed 's/ *//'

但仍然无法提取第一列。 欢迎任何帮助。

【问题讨论】:

  • awk 应该可以工作。为什么将; 指定为字段分隔符,而它只是空格?
  • 您的 sed 命令只是删除了空格,它不会删除 空格之后的列。

标签: unix text filter extract solaris


【解决方案1】:

这应该可行:

awk '{print $1}' axelist.txt

awk 中的默认字段分隔符是任何空格序列。

使用 sed 应该是:

sed 's/ .*//' axelist.txt

你错过了.,所以它只是删除了空格,而不是空格之后的所有内容。

【讨论】:

  • 有没有办法用从awk '{print $1}' axelist.txt 收到的输出重新填充 axelist.txt 文件,从而覆盖以前的内容?
  • sed 具有替换文件的-i 选项。 awk 没有类似的选项——你必须写入一个新文件然后重命名它。
  • 尝试了sed -i 's/ .*//' axelist.txt,但得到了Illegal option -- i。我正在使用solaris。我是否正确运行代码?
  • 这些天我无法访问 Solaris,您可能需要使用 /usr/xpg4/bin/sed 来获得现代选项。
  • @Barmar -i 是 GNU 特定的非 POSIX 选项,因此 /usr/xpg4/bin/sed 在这里无济于事。
猜你喜欢
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-27
  • 2011-09-08
  • 2011-02-12
  • 1970-01-01
相关资源
最近更新 更多