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

标签 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_NATIONALIDE_ADH_TEMP_VO.dat F_PERSON_NATIONALIDE_SSN_TEMP_VO.dat > Worker.dat

其中 Worker.dat 是我的输出文件。

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

我试过在上面的代码中插入/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

循环:

for file in F_Worker_TEMP_VO.dat ... F_PERSON_NATIONALIDE_SSN_TEMP_VO.dat; do
   cat "${file}"
   echo
done > Worker.dat

关于linux - 使用 cat 命令以新行开始每个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58216419/

相关文章:

Linux Bourne shell - 目录可写检查始终返回 "Not Writable"

Windows Perl --> Unix 在移植后不工作,可能是编码问题

c - Linux内核FIELD_SIZEOF宏解释

R h2o getHelpFile : package 'XYZ' exists but was not installed under R >= ver. num 所以无法访问帮助

Linux shell 脚本 - 在文件的第一行搜索字符串(日期)并将其复制到新文件?

bash - 如何使用 Unix 变量在 session {bash} 中设置和保留值

linux - Perl 脚本不执行某些外部调用

linux - 如何在 linux-shell 中使用 `amp;` 和 `gt;` 命令?

unix - 使用 grep 进行多种搜索模式

c - 如何测量一段程序的用户/系统 cpu 时间?