sed输出如何像printf的格式化打印一样格式化?

布拉姆

sed可以用类似于printf的格式化打印格式的字符串替换文本吗?

以下sed命令用变量中指定的多个值替换以“ $ domain”的当前值开头的行。

/bin/sed  "s/\(^${domain} *${limittype} * ${limititem}.*\)/$EXPL#\1\n${domain} ${limittype} ${limititem} ${value}/" /etc/security/limits.conf

但是,由于domain等的值的长度不同,因此无法正确对齐输出。

所以输出将是这样的

#oracle   hard   nproc    131072
oracle hard nproc 666

虽然有效,但很难阅读。我希望得到类似的东西

#oracle   hard   nproc    131072
oracle   hard   nproc    666

我可以拿到的最好的输出是:

/bin/sed  "s/\(^${domain}\)\( *\)\(${limittype}\)\( *\)\(${limititem}\)\( *\)\(.*\)/$EXPL#\1\2\3\4\5\6\7\n${domain}\2${limittype}\4${limititem}\6${value}/" /etc/security/limits.conf

但是我相信必须有一种更优雅的方法来做到这一点。

所述sed的一个衬里文件包含一些实例中使用指定数目的字符,例如

sed -e :a -e 's/^.\{1,78\}$/ &/;ta'  # set at 78 plus 1 space

但这regexp不在本replacement节中。

彼得·奥

这使用扩展的regex语法-r,可以消除很多混乱情况。另外,由于您已经知道某些字段值,因此实际上不需要反向引用它们,从而再次减少了混乱(和开销)。

&是一个特殊的替换值:它包含整个匹配的模式。使用&,同样可以减少混乱。由于它不是反向引用,因此开销大大减少。

我用( +)对比( *)+假定有输入字段之间的至少一个空间。只是将其更改为*事实并非如此。

EXPL=
dom=oracle
typ=hard
itm=nproc
val=666

echo "oracle   hard   nproc    131072" |
  sed -r "s/^$dom( +)$typ( +)$itm( +).*/$EXPL#&\n$dom\1$typ\2$itm\3$val/" 

输出

#oracle   hard   nproc    131072
oracle   hard   nproc    666

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

sed输出如何像printf的格式化打印一样格式化?

来自分类Dev

像Python一样格式化异常

来自分类Dev

像 Word 文档一样格式化

来自分类Dev

如何收集必须像字符串一样格式化的数字?

来自分类Dev

像hdfs节点格式一样格式化ActiveMQ服务器?

来自分类Dev

如何格式化printf输出

来自分类Dev

是否可以像普通警告一样格式化“代码分析”警告?

来自分类Dev

像Facebook的评论一样格式化C#项目符号列表

来自分类Dev

是否可以像普通警告一样格式化“代码分析”警告?

来自分类Dev

像Facebook的注释一样格式化C#项目符号列表

来自分类Dev

像网址一样格式化的C#文件名

来自分类Dev

像购物清单一样格式化数组

来自分类Dev

像使用Twitter存档的Twitter存档一样格式化推文

来自分类Dev

将格式化的文本显示为QTextEdit,就像在C的printf中一样

来自分类Dev

如何阻止Excel自动格式化并使其像数字处理程序一样工作

来自分类Dev

如何像其他人一样格式化我的新驱动器

来自分类Dev

使用printf格式化数组的输出

来自分类Dev

格式化输出

来自分类Dev

格式化输出

来自分类Dev

如何格式化动态输出以在printf中创建表

来自分类Dev

我如何在java中使用printf来打印格式化输出

来自分类Dev

如何将sed输出通过管道传递给printf进行格式化?

来自分类Dev

重新格式化输出打印

来自分类Dev

智能格式化打印输出

来自分类Dev

Ajax将格式化的文本传递到其他php文件并像文本区域一样显示

来自分类Dev

像父进程一样格式化生成的gulp进程的输出

来自分类Dev

使用sed命令格式化输出

来自分类Dev

如何格式化Mongoose调试输出-漂亮的打印

来自分类Dev

如何使用PHP格式化检索到的MySQL数据以使其像域的子目录一样

Related 相关文章

  1. 1

    sed输出如何像printf的格式化打印一样格式化?

  2. 2

    像Python一样格式化异常

  3. 3

    像 Word 文档一样格式化

  4. 4

    如何收集必须像字符串一样格式化的数字?

  5. 5

    像hdfs节点格式一样格式化ActiveMQ服务器?

  6. 6

    如何格式化printf输出

  7. 7

    是否可以像普通警告一样格式化“代码分析”警告?

  8. 8

    像Facebook的评论一样格式化C#项目符号列表

  9. 9

    是否可以像普通警告一样格式化“代码分析”警告?

  10. 10

    像Facebook的注释一样格式化C#项目符号列表

  11. 11

    像网址一样格式化的C#文件名

  12. 12

    像购物清单一样格式化数组

  13. 13

    像使用Twitter存档的Twitter存档一样格式化推文

  14. 14

    将格式化的文本显示为QTextEdit,就像在C的printf中一样

  15. 15

    如何阻止Excel自动格式化并使其像数字处理程序一样工作

  16. 16

    如何像其他人一样格式化我的新驱动器

  17. 17

    使用printf格式化数组的输出

  18. 18

    格式化输出

  19. 19

    格式化输出

  20. 20

    如何格式化动态输出以在printf中创建表

  21. 21

    我如何在java中使用printf来打印格式化输出

  22. 22

    如何将sed输出通过管道传递给printf进行格式化?

  23. 23

    重新格式化输出打印

  24. 24

    智能格式化打印输出

  25. 25

    Ajax将格式化的文本传递到其他php文件并像文本区域一样显示

  26. 26

    像父进程一样格式化生成的gulp进程的输出

  27. 27

    使用sed命令格式化输出

  28. 28

    如何格式化Mongoose调试输出-漂亮的打印

  29. 29

    如何使用PHP格式化检索到的MySQL数据以使其像域的子目录一样

热门标签

归档