【问题标题】:Read a line from file, replace line to another file从文件中读取一行,将行替换为另一个文件
【发布时间】:2019-01-08 15:34:52
【问题描述】:

我是 Linux 脚本的新手。 我需要一个文件中的行,一个一个地写在另一个文件的特定行中。

示例:

文件1.txt:

line1
line2
line3

文件2.txt:

abc
abc
xxx

我需要先写“line1”而不是File2.txt的第3行,然后对这个文件做一些操作,然后写“line2”而不是File2.txt的第3行等等。

目前这就是我所拥有的

    for n in {1..5} 
do
    a=$(sed '24!d' File1) #read string 24
    echo $a
    sed -i '1s/.*/a/' File2.txt

done

现在,我应该将循环中使用的变量 n 代替为第 3 行中的 24。可能吗? 第 5 行也是一样,其中 >"a" 应该是一个变量,但程序将 File2.txt 的第一行更改为 "a"。 我可以使用这个功能还是需要使用其他功能(如果是什么功能?)?

【问题讨论】:

标签: bash shell


【解决方案1】:

试试,

sed '2r t2' t1

如果你想对文件 2 执行任何操作,你可以简单地使用

sed 2r<(cat t2) t1  ##You can change command (cat t2) as per your need

我想这会解决你的问题。

root@ubuntu:~/T/e/s/t# cat t1
test
asdf
xyza
root@ubuntu:~/T/e/s/t# cat t2
sample line 1
sample line 2
sample line 3
sample line 4
root@ubuntu:~/T/e/s/t# sed 2r<(cat t2) t1
test
asdf
sample line 1
sample line 2
sample line 3
sample line 4
xyza

详情

2:第二行

r: 从文件中读取

如果你想提交这个操作,你可以使用 sed -i 选项。详情请参考man sed

感谢 Benjamin W. 缺少场景 (sed '2r t2' t1)

【讨论】:

  • 我不确定这是什么问题(很难说,因为没有所需的输出),但如果你这样做,你为什么要使用进程替换?你可以改用sed '2r t2' t1
  • 是的,我正在使用进程替换,因为如果需要在第二个文件中进行某些操作(sed、awk、grep 等),这样做很容易。您可以根据需要制作许多可能的场景。
猜你喜欢
  • 2020-11-19
  • 1970-01-01
  • 2018-01-22
  • 2021-05-20
  • 2014-03-01
  • 2020-01-31
  • 1970-01-01
  • 2019-07-26
  • 1970-01-01
相关资源
最近更新 更多