Linux 使用cat命令以新行开始每个文件

Linux 使用cat命令以新行开始每个文件,linux,shell,unix,Linux,Shell,Unix,我正在尝试使用cat命令将不同的文件合并到一个文件中 cat F_Worker_TEMP_VO.dat F_PERSON_NAME_VO.dat F_PERSON_CITIZENSHIP_VO.dat F_PERSON_LEGISLATIONDATA_VO.dat F_PERSON_RELIGION_VO.dat F_PERSON_PASSPORT_VO.dat F_PERSON_DRIVERSLIC_VO.dat F_PERSON_NATIONALIDE_VO.dat F_PERSON_NAT

我正在尝试使用cat命令将不同的文件合并到一个文件中

cat F_Worker_TEMP_VO.dat F_PERSON_NAME_VO.dat F_PERSON_CITIZENSHIP_VO.dat F_PERSON_LEGISLATIONDATA_VO.dat F_PERSON_RELIGION_VO.dat F_PERSON_PASSPORT_VO.dat F_PERSON_DRIVERSLIC_VO.dat F_PERSON_NATIONALIDE_VO.dat F_PERSON_NATIONALIDE_ADH_TEMP_VO.dat F_PERSON_NATIONALIDE_SSN_TEMP_VO.dat > Worker.dat
其中Worker.dat是我的输出文件

使用上述代码,第二个文件在第一个文件数据的末尾开始。我希望每个文件数据都以新行开始

METADATA    Worker  EffectiveStartDate  EffectiveEndDate    StartDate   CategoryCode    ActionCode  BloodType   CorrespondenceLanguage  DateOfBirth TownOfBirth SourceSystemOwner
METADATA    PersonName  PersonNameId    EffectiveStartDate  EffectiveEndDate    PersonId(SourceSystemId)    SourceSystemOwner   SourceSystemId  Title   KnownAs LegislationCode NameType
METADATA    PersonCitizenship   CitizenshipId   PersonId(SourceSystemId)    DateFrom    DateTo  LegislationCode CitizenshipStatus   SourceSystemOwner   SourceSystemId  



Actual
METADATA    Worker  EffectiveStartDate  EffectiveEndDate    StartDate   CategoryCode    ActionCode  BloodType   CorrespondenceLanguage  DateOfBirth TownOfBirth SourceSystemOwner   SourceSystemIdMETADATA  PersonName  PersonNameId    EffectiveStartDate  EffectiveEndDate    PersonId(SourceSystemId)    SourceSystemOwner   SourceSystemId  Title   KnownAs LegislationCode NameTypeMETADATA    PersonCitizenship   CitizenshipId   PersonId(SourceSystemId)    DateFrom    DateTo  LegislationCode CitizenshipStatus   SourceSystemOwner
我已尝试在上述代码中插入/n、echo。它没有给我输出

cat F_Worker_TEMP_VO.dat F_PERSON_NAME_VO.dat F_PERSON_CITIZENSHIP_VO.dat F_PERSON_LEGISLATIONDATA_VO.dat F_PERSON_RELIGION_VO.dat F_PERSON_PASSPORT_VO.dat F_PERSON_DRIVERSLIC_VO.dat F_PERSON_NATIONALIDE_VO.dat F_PERSON_NATIONALIDE_ADH_TEMP_VO.dat F_PERSON_NATIONALIDE_SSN_TEMP_VO.dat > Worker.dat
预期格式示例 每个元数据都是我正在合并的不同文件的结果。每个元数据都应以新行开头

METADATA    Worker  EffectiveStartDate  EffectiveEndDate    StartDate   CategoryCode    ActionCode  BloodType   CorrespondenceLanguage  DateOfBirth TownOfBirth SourceSystemOwner
METADATA    PersonName  PersonNameId    EffectiveStartDate  EffectiveEndDate    PersonId(SourceSystemId)    SourceSystemOwner   SourceSystemId  Title   KnownAs LegislationCode NameType
METADATA    PersonCitizenship   CitizenshipId   PersonId(SourceSystemId)    DateFrom    DateTo  LegislationCode CitizenshipStatus   SourceSystemOwner   SourceSystemId  



Actual
METADATA    Worker  EffectiveStartDate  EffectiveEndDate    StartDate   CategoryCode    ActionCode  BloodType   CorrespondenceLanguage  DateOfBirth TownOfBirth SourceSystemOwner   SourceSystemIdMETADATA  PersonName  PersonNameId    EffectiveStartDate  EffectiveEndDate    PersonId(SourceSystemId)    SourceSystemOwner   SourceSystemId  Title   KnownAs LegislationCode NameTypeMETADATA    PersonCitizenship   CitizenshipId   PersonId(SourceSystemId)    DateFrom    DateTo  LegislationCode CitizenshipStatus   SourceSystemOwner

目前,每个结果文件之间都有一个间隙。它从上一个文件结果的结尾开始

快速且脏,在每个元数据之前添加换行符:

cat F_Worker_TEMP_VO.dat ....dat | sed 's/METADATA/\nMETADATA/g' > Worker.dat
脏,在每个元数据之前添加换行符,第一个除外:

cat F_Worker_TEMP_VO.dat ....dat | sed 's/\(.\)METADATA/\1\nMETADATA/g' > Worker.dat
循环:


快速且肮脏,在每个元数据之前添加换行符:

cat F_Worker_TEMP_VO.dat ....dat | sed 's/METADATA/\nMETADATA/g' > Worker.dat
脏,在每个元数据之前添加换行符,第一个除外:

cat F_Worker_TEMP_VO.dat ....dat | sed 's/\(.\)METADATA/\1\nMETADATA/g' > Worker.dat
循环:


我相信这个答案涵盖了您可能需要的所有内容:

无论如何,下面是您需要的命令:

for f in *.dat; do (cat "${f}"; echo) >> finalfile.dat; done

或者,如果要按某种顺序仅连接文件的子集,请使用数组。Sed和Awk的使用也在链接的StackOverflow答案中。

我相信这个StackOverflow答案涵盖了您可能需要的所有内容:

无论如何,下面是您需要的命令:

for f in *.dat; do (cat "${f}"; echo) >> finalfile.dat; done

或者,如果要按某种顺序仅连接文件的子集,请使用数组。Sed和Awk的使用也在链接的StackOverflow答案中。

1。迭代文件。2.对于每个文件a)cat it b)打印换行符。或者更高级-将每行上的文件列表输入到
xargs
,将其应用到
sed
,在文件的最后一行添加一个换行符。您能帮我输入代码吗。我是Unixy的新手你的文件不会以换行符结尾吗?这一点可以说是错误的。不,结果将与以前的文件数据一起继续。例如,personname文件的元数据标记将在worker file sourcesystem data1的数据之后开始。迭代文件。2.对于每个文件a)cat it b)打印换行符。或者更高级-将每行上的文件列表输入到
xargs
,将其应用到
sed
,在文件的最后一行添加一个换行符。您能帮我输入代码吗。我是Unixy的新手你的文件不会以换行符结尾吗?这可以说是错误的。不,结果将与以前的文件数据一起继续。例如,personname文件的元数据标记在worker file sourcesystem数据的数据之后立即开始。这看起来确实是重复的。我很确定,但我是新来的,所以我相信我不能把它标记为一个。这看起来真的像是一个复制品。我很确定它是,但我是新来的,所以我相信我不能把它标记为一个。