Replace all but first space with tabs
我有一系列管道化的bash命令
1 2 3 4 5 | grep A01929 test_FTF89MNR.txt | grep status | tr"=""" | tr",""" | cut -d"" -f 1 -f 2 -f 11 -f 14 -f 17 |
它产生一大堆输出,看起来像这样
1 2 3 | ... 2016-02-25 09:15:01.41 2742 1535 1796 ... |
号
为了便于导入到Excel,我想用制表符替换列之间的所有空白,除了第一个分隔数据和时间的空白。所以目标输出是
1 2 3 | ... 2016-02-25 09:15:01.41\t2742\t1535\t1796 ... |
有没有一个简单的命令行fu,我可以粘到我的管道链来完成这一点?
您可以使用
1 | awk '{print $1"" $2"\t" $3"\t" $4"\t" $5}' Input.txt |
号
为了进一步说明梅林提出的关于
1 2 3 4 | grep A01929 test_FTF89MNR.txt | grep status | tr"=,""" | awk '{print $1"" $2"\t" $11"\t" $14"\t" $17}' |
。
有了原始文件的一个摘录,我相信有人会想出一个全方位的cx1〔7〕版本。
和塞德在一起变得可爱可以帮助你-把它们全部换掉,然后把第一个背换掉,例如。
江户十一〔四〕号
例如
埃多克斯1〔5〕
正如评论中所指出的,这是Mac,所以不会起作用。这里有一个如何处理Mac上标签的链接。
或者,这里有一个全awk版本取代了所有的管道。埃多克斯1〔6〕
匹配一行上的两个grepped值,然后替换,=for nothing,然后打印所需的分隔符。
您可以对
1 | echo"a b c d" | sed 's/ /:/g;s/:/ /' |
第一个sed命令
如果有固定的字段数据,可以在bash中使用
1 2 3 4 5 6 | txt="2016-02-25 09:15:01.41 2742 1535 1796" while read -r da ti f1 f2 f3 do printf"%s %s\t%s\t%s\t%s" $da $ti $f1 $f2 $f3 done <<< $txt |