使用sed将字符串添加到某些行

时间:2015-09-17 05:52:33

标签: linux bash sed

我正在尝试对某些手册页进行一些格式化,我需要添加

] hfill \\

到某些标题。我想做这个

NAME
   env - run a program in a modified environment

SYNOPSIS
   env    [-]    [-i]    [-u   name]   [--ignore-environment]
   [--unset=name] [name=value]... [command [args...]]

DESCRIPTION
   This manual page documents the GNU version  of  env.   env
   runs  a  command with an environment modified as specified
   by the command line...

进入这个

\item[NAME] \hfill \\
   env - run a program in a modified environment

\item[SYNOPSIS] \hfill \\
   env    [-]    [-i]    [-u   name]   [-\hspace{.01cm}-ignore-environment]
   [-\hspace{.01cm}-unset=name] [name=value]... [command [args...]]

\item[DESCRIPTION] \hfill \\
   This manual page documents the GNU version  of  env.   env
   runs  a  command with an environment modified as specified
   by the command line...

我得到了“\ item [”部分,但无论出于何种原因我无法得到另一半。我正在使用的命令:

 /[A-Z]/s/$/\] \\hfill \\\\/

有效,但出现在我不想要的行上。

3 个答案:

答案 0 :(得分:1)

试试这个,假设标题只是以大写字母开头的行

sed '/^[A-Z]/ s/.*/\\item[&] \\hfill \\\\/' YourFile

对于\hspace{.01cm},您应该定义何时应该发生(条件为)

答案 1 :(得分:0)

这可能适合你(GNU sed):

sed 's/^[[:upper:]]\+$/\\item[&] \\hfill \\\\/;s/\[--/[-\\hspace{.01cm}-/g' file

如果您没有GNU sed,请尝试:

sed -e 's/^[[:upper:]][[:upper:]]*$/\\item[&] \\hfill \\\\/' -e 's/\[--/[-\\hspace{.01cm}-/g' file

答案 2 :(得分:0)

sed -r 's/^([A-Z]+)$/\\item[\1] \\hfill \\\\/' file.txt

你可以一步完成。