在没有换行的情况下将字符串添加到文本文件的开头

时间:2014-10-27 01:56:48

标签: r bash cat

因此,我尝试将一些大型制表符分隔txt文件(200 MB)导入R进行统计分析。不幸的是,文件格式与列/行数不一致。第一行包含除前两列之外的所有列的标题名称。

示例:

header3 header4 header5

column1 column2 column3 column4 column5

我可以在将文件读入R后修复该文件,但更优雅的方法是将header1 header2插入文件中。 我试过了:

cat file_with_missing_headers main_file > new_file

这导致两者之间的新界限。有没有办法压制新线?
或者也许是另一种工具?

2 个答案:

答案 0 :(得分:5)

解决方案1 ​​

$ { echo -n "header1 header2 "; cat file; } >newfile

-n会抑制不需要的换行符。

解决方案2

使用sed

$ sed '1s/^/header1 header2 /' file >newfile

由于1,这会对file的第一行(仅第一行)进行替换。插入符^匹配第一行的开头。标题在行的开头被替换,文件的其余部分保持不变。

答案 1 :(得分:2)

在R中,您可以忽略第一行,然后创建一组新名称。例如,使用

setNames(read.table(fileName, skip = 1), paste0("header", 1:5))

将读取文件并一次性设置新列名。请注意,read.table的默认分隔符为sep = "",因此如果是csv文件,则需要将其更改为sep = ","

然后,当您完成后,您可以使用write.table将新数据集写入同一文件,下次使用数据时无需担心这一点。