【问题标题】:formatting a text file before mailing it in shell script在发送到 shell 脚本之前格式化文本文件
【发布时间】:2015-01-14 22:21:37
【问题描述】:

目前我正在使用

uuencode "file" "report.txt" | mailx -s "Subject" xyz@abc.com

我得到的输出是

002506960 830148XXM ILD514CSE 0000000 004129197 737620BQJ LCT453INN 0000000 000130122 984062NOR YUR416XER 0000480 000134266 095151MET RUB648DEA 0000210
000232322 941669CAR DET672KEH 0000600 000232320 941669CAR DET672KEH 0071014 000232325 941669CAR DET672KEH 0071014

需要的输出:

032506961 830148XXM ILD514CSE 0000000    
034129191 737620BQJ LCT453INN 0000000    
030130121 984062NOR YUR416XER 0000480    
030134261 095151MET RUB648DEA 0000210    
030232321 941669CAR DET672KEH 0000600    
030232321 941669CAR DET672KEH 0071014    
030232321 941669CAR DET672KEH 0071014

(注意:两行之间没有间隙) 知道如何实现吗?

【问题讨论】:

    标签: file shell email unix scripting


    【解决方案1】:

    您可以将输出通过管道传输到:

    awk '{for (i=1; i<=NF; i++) printf "%s%s", $i, (i%4==0)?ORS:OFS}'
    

    这将给出:

    002506960 830148XXM ILD514CSE 0000000
    004129197 737620BQJ LCT453INN 0000000
    000130122 984062NOR YUR416XER 0000480
    000134266 095151MET RUB648DEA 0000210
    000232322 941669CAR DET672KEH 0000600
    000232320 941669CAR DET672KEH 0071014
    000232325 941669CAR DET672KEH 0071014
    

    【讨论】:

    • 谢谢。你能解释一下吗。另外我将如何将此输出保存在我必须邮寄的文件中?
    • 保存输出使用:uuencode "file" "report.txt" | mailx -s "Subject" xyz@abc.com | awk '{for (i=1; i&lt;=NF; i++) printf "%s%s", $i, (i%4==0)?ORS:OFS}' &gt; output 解释:每次字段计数可被 4 整除时,此 awk 都会插入 ORS(默认为换行符)
    • 感谢您的回复。但它与以前的输出相同。它不是在第四列之后输入一个输入来开始新的一行。
    • 您可以在我的答案中看到 awk 输出,它是根据您的给定输出生成的。
    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多