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 …