我有一个多行、制表符分隔的文件,如下所示:
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}'