我是awk和sed的新手,我正在寻找一种截断80行字符的方法,但是我使用printf在该行中打印了几个字符串.最后两个字符串是那些给我带来问题的字符串,因为它们在我的代码的每次迭代中都有不同的大小.这是我目前的代码:
printf "%5d %3s%.2s %4s %s %s \n" "$f" "$month" "$day" "$year" "$from" "$subject"
Run Code Online (Sandbox Code Playgroud)
此代码用于创建通过Bash脚本传递的电子邮件的摘要.我所知道的是,对于我的其他字符串的空格和要求,我在$ from和$ subject字符串之间有60个字符的空间.
任何帮助表示赞赏.
dev*_*ull 111
我正在寻找一种方法来截断80个字符的行...
您可以将输出传递给cut:
printf ... | cut -c 1-80
Run Code Online (Sandbox Code Playgroud)
如果您想确保每行不超过80个字符(或换行以适合指定的宽度),您可以使用fold:
printf ... | fold -w 80
Run Code Online (Sandbox Code Playgroud)
Aar*_* R. 18
另一种解决方法就是使用Bash(语法:) ${var:0:80},例如:
printf "%5d %3s%.2s %4s %s %s \n" "$f" "$month" "$day" "$year" "$from" "${subject::80}"
Run Code Online (Sandbox Code Playgroud)
这会在字符串到达之前截断它printf.此方法还允许您单独为每个打印列指定不同的最大宽度.