Linux 使用cat命令以新行开始每个文件
我正在尝试使用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 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数据的数据之后立即开始。这看起来确实是重复的。我很确定,但我是新来的,所以我相信我不能把它标记为一个。这看起来真的像是一个复制品。我很确定它是,但我是新来的,所以我相信我不能把它标记为一个。