Bash 如何从txt文件中读取每一行并从以“开始”的行开始打印;创建“U日期”;壳内脚本

Bash 如何从txt文件中读取每一行并从以“开始”的行开始打印;创建“U日期”;壳内脚本,bash,shell,Bash,Shell,我想从创建日期开始打印。结果 文件应该如下所示 5G_Fixed_Wireless_Dashboard_TestScedule||||||||||||||||^M Report Run Date||08/07/2018|||||||||||||||||||||^M Requesting User Company||NEW|||||||||||||||||||||^M Report Criteria|||||||||||||||||||||||^M " Service Job Update

我想从创建日期开始打印。结果 文件应该如下所示

5G_Fixed_Wireless_Dashboard_TestScedule||||||||||||||||^M

Report Run Date||08/07/2018|||||||||||||||||||||^M

Requesting User Company||NEW|||||||||||||||||||||^M

Report Criteria|||||||||||||||||||||||^M

" Service Job Updated from Date:

  Service Job Updated to Date:

  Service Job Created from Date: 08/06/2018

   Service Job Created to Date:

 Service Job Status:

Resolution Code:"|||||||||||||||||||||||^M

Created Date|Job Status|Schedule Date|Job 
    Number|Service Job Type|Verizon Customer Order 
    Number|Verizon Location Code|Service|Installation 
    Duration|Part Number
在你们把我和其他一些问题联系起来之后,我尝试了以下几行。但我的要求是将结果打印到同一个文件中

FILELIST=
find$MFROUTDIR-maxdepth 1-name“XXXXXX\u 5G\u Order.*.txt”

对于$FILELIST中的nextFile;做

   Created Date|Job Status|Schedule Date|Job 
   Number|Service Job Type|Verizon Customer Order 
   Number|Verizon Location Code|Service|Installation 
   Duration|Part Number
完成


通过写入以上代码行,输出将打印在控制台上。您能否建议一些方法将其打印到同一个文件中。

这可以通过简单的
awk
命令轻松完成:

    cat $nextFile | sed -n -e '/Created Date/,$p'
当遇到以创建日期开始的行时,我们将标志
p
设置为
1
。稍后,当
p==1
时,我们使用awk默认操作打印每一行


参考文献:


你试过什么吗?这可以通过多种方式完成,例如bash、sed、awketc@NavyaNaiduChamidisetty:不在注释中,通过编辑问题添加此代码。首先,您确实不想回写到同一文件。然而,由于你会选择忽略这个建议,你有很多选择。可能您只需将
-i
添加到sed调用中即可满足。@williampersell当我将-i添加到sed命令时,它会说“sed:无输入文件”。我使用了cat$nextFile | sed-I-n-e'/Created Date/,$p'@williampersell当我添加cat$nextFile | sed-I-n-e'/Created Date/,$p'$nextFile时,它起作用了。感谢您的回复。请您解释一下“{p=1}p”在上述命令中的作用。我完全不熟悉shell脚本。我没有使用awk,我使用了“cat$nextFile | sed-I-n-e'/Created Date/,$p'$nextFile”,它工作正常。我这里有一个小问题,比如当使用数据创建新文件时,它会在每行后面附加^M字符。你能帮我解决这个问题吗。实际上,我在上面的评论中提到的cat语句之后添加了这一行“sed-I-e's/^M//g'$nextFile”。但它没有起作用。我仍然看到^M您没有使用我建议的awk解决方案,我无法提供建议。
awk '/^Created Date/{p=1} p' file
Created Date|Job Status|Schedule Date|Job
    Number|Service Job Type|Verizon Customer Order
    Number|Verizon Location Code|Service|Installation
    Duration|Part Number