首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Unix中将文件中的一行从linenumber‘n1’移到linenumber‘n2’

在Unix中将文件中的一行从linenumber‘n1’移到linenumber‘n2’
EN

Stack Overflow用户
提问于 2016-05-10 13:08:15
回答 2查看 87关注 0票数 2

我有一个名为file1的文件,如下所示。

代码语言:javascript
复制
  1 intst
  2 1.0
  3 12.591870 0.000000 0.000000
  4 0.000000 12.591870 0.000000
  5 0.000000 0.000000 12.591870
  6 Ba Zr Al O
  7 27 26 1 81
  8 direct
  9 0.166667 0.166666 0.167762 Ba
 10 0.166667 0.166667 0.500000 Ba  #Line to be moved
 11 0.166666 0.166667 0.832238 Ba
 ...
 ...
 60 0.666668 0.666666 0.329117 Zr
 61 0.666665 0.666667 0.670884 Zr
 62 0.666667 0.666667 1.000000 Al #Moved line to be inserted below this line
 63 0.166667 0.999071 0.999999 O

我需要复制line- 10的内容,并将其移动到line-62下面,方法是创建一条新行,以便新文件显示为

代码语言:javascript
复制
  1 intst
  2 1.0
  3 12.591870 0.000000 0.000000
  4 0.000000 12.591870 0.000000
  5 0.000000 0.000000 12.591870
  6 Ba Zr Al O
  7 27 26 1 81
  8 direct
  9 0.166667 0.166666 0.167762 Ba
 10 0.166666 0.166667 0.832238 Ba #Original line- 11
 ...
 ...
 59 0.666668 0.666666 0.329117 Zr
 60 0.666665 0.666667 0.670884 Zr
 61 0.666667 0.666667 1.000000 Al
 62 0.166667 0.166667 0.500000 Ba #Original line-10
 63 0.166667 0.999071 0.999999 O

使用sed我分别知道如何删除行

代码语言:javascript
复制
sed -i.bkp -e '10d' file

并插入一行

代码语言:javascript
复制
sed -i '10i <string>'file1

但我不知道如何复制一行的内容并将其移动到另一行

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-10 13:15:40

您可以使用这个sed

代码语言:javascript
复制
sed '10{h;D}; 62G' file

根据@Benjamin的评论,您也可以使用d

代码语言:javascript
复制
sed '10{h;d}; 62G' file

使用-i.bak进行就地编辑.

这里,

  • 10 and 62 -线号
  • h -复制模式空间以保持空间。这将节省line 10的空间。
  • G -将保持空间附加到模式空间。这将将line 10附加到模式空间。
  • D --删除模式空间中的文本,直到第一行。
票数 3
EN

Stack Overflow用户

发布于 2016-05-10 15:04:40

awk:

代码语言:javascript
复制
awk -v n1=10 -v n2=62 '
    NR == n1 {line=$0; next}
    {print}
    NR == n2 {print line}
' file > file.new

或受尊敬的人(就地编辑文件)

代码语言:javascript
复制
ed file <<END_ED
# move line 10 after line 62
10m62
# save and quit
w
q
END_ED
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37139518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档