我将excel数据导出到制表符分隔的txt文件中,但是我很难在终端中打印它,这是文件:
heading1 heading2 heading3 heading4 heading5 heading6 heading7
col1row1 col2row1 col3row1 col4row1 col5row1 col6row1 col7row1
col1row2 col2row2 col3row2 col4row2 col5row2 col6row2 col7row2
col1row3 col2row3 col3row3 col4row3 col5row3 col6row3
col1row4 col2row4 col3row4 col4row4
您可以在此处下载文本文件。
我尝试了sed和awk。
update1:我在bsd(mac)上,cat file.txt以不可读的丑陋格式打印,我有一个bash脚本需要输入标签,因此我只先打印标签,然后从打印列表中选择正确的标签
我不明白。 你不能做cat file.txt?
您到底尝试了什么,期望得到什么输出?
在终端中打印它是什么意思。 猫文件够吗?
请看我的更新
您的文件有两个问题:
它具有旧的Mac风格的行尾。这些导致Unix终端上的输出以一种令人困惑的方式被覆盖
它缺少最后的换行符。
使用tr和echo
解决此问题的一种方法是:
$ tr '
' '
'
heading1 heading2 heading3 heading4 heading5 heading6 heading7
col1row1 col2row1 col3row1 col4row1 col5row1 col6row1 col7row1
col1row2 col2row2 col3row2 col4row2 col5row2 col6row2 col7row2
col1row3 col2row3 col3row3 col4row3 col5row3 col6row3
col1row4 col2row4 col3row4 col4row4
在这里,tr '
' '
'用换行符(unix样式的行尾)替换所有回车符(Mac样式的行尾)。 echo""语句添加最后一个换行符。
使用awk
$ awk 1 RS='
' test_tab_delimited.txt
heading1 heading2 heading3 heading4 heading5 heading6 heading7
col1row1 col2row1 col3row1 col4row1 col5row1 col6row1 col7row1
col1row2 col2row2 col3row2 col4row2 col5row2 col6row2 col7row2
col1row3 col2row3 col3row3 col4row3 col5row3 col6row3
col1row4 col2row4 col3row4 col4row4
这里的awk程序由单个字符1组成。这告诉awk打印它读取的每个记录
选项设置RS='
'告诉awk将回车符视为输入上的记录分隔符。
使用sed
$ sed 's/
/
/g; s/$/
/' test_tab_delimited.txt
heading1 heading2 heading3 heading4 heading5 heading6 heading7
col1row1 col2row1 col3row1 col4row1 col5row1 col6row1 col7row1
col1row2 col2row2 col3row2 col4row2 col5row2 col6row2 col7row2
col1row3 col2row3 col3row3 col4row3 col5row3 col6row3
col1row4 col2row4 col3row4 col4row4
我们在这里使用两个sed命令:
s/
/
/g告诉sed在找到的每一个地方都用换行符代替回车。
s/$/
/告诉sed在每行末尾添加最后一个换行符。这仅发生一次,因为在输入时文件没有换行符,因此sed将整个文件视为一行。
[此解决方案已在GNU(Linux)sed上进行了测试。使它在BSD(OSX)sed下运行可能需要进行一些小的更改。]
使用GNU grep
$ grep -oP '[^
]*(?=
|$)' test_tab_delimited.txt
heading1 heading2 heading3 heading4 heading5 heading6 heading7
col1row1 col2row1 col3row1 col4row1 col5row1 col6row1 col7row1
col1row2 col2row2 col3row2 col4row2 col5row2 col6row2 col7row2
col1row3 col2row3 col3row3 col4row3 col5row3 col6row3
col1row4 col2row4 col3row4 col4row4
此解决方案需要GNU grep。它不适用于Mac上安装的默认grep。
使用mac2unix
您的系统可能还安装了一个实用程序,该实用程序的名称可能类似于mac2unix,该实用程序用于执行此转换。
您如何看到Mac风格的结尾?
@nautical我从他提供的链接中下载了OPs文件。
我看到了,我从网站上复制并粘贴了它,od -a显示了正常的Unix换行符。
@ John1024我们以为你只是千里眼...