Linux命令以布局选项卡分隔列表

Linux命令以布局选项卡分隔列表,linux,perl,sed,awk,Linux,Perl,Sed,Awk,我想生成一个带有制表符分隔列的日志文件。除注释字段外,所有字段的输出都应采用以下格式,并以制表符分隔 time date alias comment 10:09:20 03/06/13 jre This is a test comment 我使用csh是出于历史目的 set time = `perl -MPOSIX -e 'print POSIX::strftime("%T", localtime)'` set date = `perl -M

我想生成一个带有制表符分隔列的日志文件。除注释字段外,所有字段的输出都应采用以下格式,并以制表符分隔

time        date        alias   comment
10:09:20    03/06/13    jre     This is a test comment
我使用csh是出于历史目的

set time = `perl -MPOSIX -e 'print POSIX::strftime("%T", localtime)'`
set date = `perl -MPOSIX -e 'print POSIX::strftime("%d/%m/%y", localtime)'`
set alias = jre
set comment = "This is a test comment"
将我的文本传送到
列-t

echo "time\tdate\talias\tcomment" | column -t > somefile
echo "$time\t$date\t$alias\t$comment" | column -t >> tt

我几乎得到了我想要的。但是,“我的评论”字段中的空格也更改为选项卡。有没有办法用制表符分隔前3个字段,但在注释字段中保持空格分隔

由于您的评论位于最后一列,请尝试使用
paste
。例如:

paste <(echo -e "this\tis\ttab\tseparated") <(echo "this is your comment")

paste一个选项是使用以下各项完成所有工作:


它不只是打印在标题下,但在这种情况下,最好使用格式化打印(
printf
)来代替。

这可能适用于您:

printf 'Time\tDate\tAlias\tComment\n' > file
printf '%s\t%s\t%s\t%s\n' $(date '+%T') $(date '+%d/%m/%y') jre "This is a comment" >> file

谢谢你的解决方案。我在csh中收到错误消息
缺少重定向的名称
,但在bash中没有。我认为这与无关的空白字符有关。Csh非常令人沮丧
bash-c粘贴很酷。很高兴你把它整理好了:-)
time    date    alias   comment
11:45:00    03/06/13    jre This is a test comment
printf 'Time\tDate\tAlias\tComment\n' > file
printf '%s\t%s\t%s\t%s\n' $(date '+%T') $(date '+%d/%m/%y') jre "This is a comment" >> file