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