在第 1 行的开头和结尾添加特定字符串

在第 1 行的开头和结尾添加特定字符串

输入文件看起来像这样

H1 O1 C1 H2 H3 C2 H4 H5 O2 C3 H6 H7 C4 H8 H9 O3 C5 H10 H11 C6 H12 ......

我想要以下输出文件

z(A) H1 O1 C1 H2 H3 C2 H4 H5 O2 C3 H6 H7 C4 H8 H9 O3 C5 H10 H11 C6 H12 ...... OW HW1 HW2

以便在行首包含“z(A)”,在行末包含“OW HW1 HW2”

答案1

sed -e '1s/^/z(A) /' -e '1s/$/ OW HW1 HW2/' < input > output

1是第一行,s是替代行,^是行首,$是行尾。

答案2

awk 'NR==1{print "z(A) " $0 " OW HW1 HW2"; next}1'

或者

awk 'NR==1{printf "z(A) %s OW HW1 HW2\n", $0; next}1'

或者

awk 'NR==1{$0="z(A) " $0 " OW HW1 HW2"}1'

答案3

如果您想保留相同的文件,您可以尝试:

printf '%s' 'Z(A) ' "$(<infile)" 'OW HW1 HW2' >infile

答案4

您还可以使用可编写脚本的编辑器ed

printf '%s\n' '1s/^/z(A) /' '1s/$/ OW HW1 HW2/' 'wq' | ed -s filename

这将向 打印以下三个换行符分隔的命令ed,我们要求其默默地编辑给定的filename

  • 1s/^/z(A) /- 如sed答案中所示,在第 1 行,将行的开头替换为文本z(A)
  • 1s/$/ OW HW1 HW2/- 如sed答案中所示,在第 1 行,将行尾替换为文本OW HW1 HW2
  • wq-- 将更改的文件写回磁盘并退出

相关内容