首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unix:如何将单独的列组合成一列

Unix:如何将单独的列组合成一列
EN

Stack Overflow用户
提问于 2022-03-18 01:45:17
回答 3查看 395关注 0票数 0

我创建了一个脚本,如果电子邮件满足条件,它就会进行日志记录。

我使用AWK获得下面的输出以获得特定的列。

3月17日21:21:32格林尼治标准时间2022

我想把它们转换成csv,所以我使用下面的命令

代码语言:javascript
复制
cat logchkmail_all.txt | awk '{print $4,$6,$7,$8,$9,$10}' | awk 'NR>1{$1=$1}1' OFS="," > sample.csv

...which工作,但它返回

自动登录,3月17日,21:32,格林尼治标准时间,2022年

它应该做的。但是我想要的是能够分离AUTORESTART,然后合并列6-10,这样它就只有两个列,一个是AUTORESTART,另一个是"Mar 17 21:21:32 GMT 2022“作为一列。

有办法这样做吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-03-18 01:57:52

您可以在awk print命令中插入字符串文字。

下面是一个例子:

代码语言:javascript
复制
$ cat a
1 2 3 [AUTORESTART] Mar 17 21:21:32 GMT 2022
$ cat a | awk '{print $4 "," $6 " " $7 " " $8 " " $9 " " $10}'
[AUTORESTART],17 21:21:32 GMT 2022

您可以看到,我打印了第4列,然后是文字逗号,然后是第6列,然后是文字空格,等等,直到第10列。

然后,您可以将其重定向到csv文件。

代码语言:javascript
复制
$ cat a | awk '{print $4 "," $6 " " $7 " " $8 " " $9 " " $10}' > mycsv.csv
票数 1
EN

Stack Overflow用户

发布于 2022-03-18 01:57:49

像这样的东西有用吗?至少,如果您不需要在一个管道命令中完成所有操作:

代码语言:javascript
复制
newstring=`echo $mystring | cut -d' ' -f1`
newstring="$newstring,`echo $mystring | cut -d' ' -f2-`"

echo $newstring # prints out [AUTORESTART],Mar 17 21:21:32 GMT 2022
票数 2
EN

Stack Overflow用户

发布于 2022-03-18 04:27:58

我将在本例中使用sed,因为您只想替换第一个空白:

代码语言:javascript
复制
echo '[AUTORESTART] Mar 17 21:21:32 GMT 2022' | sed 's/ /,/'
代码语言:javascript
复制
[AUTORESTART],Mar 17 21:21:32 GMT 2022
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71521601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档