仅删除第一个字段的尾随空格

仅删除第一个字段的尾随空格

我有一个多行、制表符分隔的文件,如下所示:

99999bbbbt999999BBt99t99t99t99

(在哪里=空格,t=制表符)

第二个字段中的尾随空格可以,但第一个字段中的尾随空格需要删除。有没有一种简单的方法可以从每行的第一个字段中删除尾随空格? sed/awk/tr?

答案1

sed $'s/ *\t/\t/' < file

将删除第一个选项卡之前的空格。这里假设像 ksh93、bash、zsh、mksh 或 FreeBSD sh 这样的 shell 支持$'...'(计划包含在 Single UNIX 规范的第 8 期中)。

一些sed实现(例如 GNU)sed也可以直接识别这些\t

sed 's/ *\t/\t/' file

否则,POSIXly,你可以这样做:

TAB=$(printf '\t')
sed "s/ *$TAB/$TAB/" file

您也可以使用 POSIXly 执行相同操作awk

awk '{sub(/ *\t/, "\t"); print}'

相关内容