Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 从文件中读取一行,将该行替换为另一个文件_Bash_Shell - Fatal编程技术网

Bash 从文件中读取一行,将该行替换为另一个文件

Bash 从文件中读取一行,将该行替换为另一个文件,bash,shell,Bash,Shell,我不熟悉Linux脚本。 我需要一个文件中的行,然后一行一行地将其写入另一个文件的特定行中 示例: File1.txt: line1 line2 line3 File2.txt: abc abc xxx 我需要先写“line1”而不是File2.txt的第三行,然后对该文件执行一些操作,然后写“line2”而不是File2.txt的第三行,依此类推 目前这就是我所拥有的 for n in {1..5} do a=$(sed '24!d' File1) #read strin

我不熟悉Linux脚本。 我需要一个文件中的行,然后一行一行地将其写入另一个文件的特定行中

示例:

File1.txt:

line1
line2
line3
File2.txt:

abc
abc
xxx
我需要先写“line1”而不是File2.txt的第三行,然后对该文件执行一些操作,然后写“line2”而不是File2.txt的第三行,依此类推

目前这就是我所拥有的

    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”。 我可以使用此功能还是需要使用其他功能(如果是,请使用哪些功能?)

试试

sed '2r t2' t1
如果要对文件2执行任何操作,只需使用

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

sed 2欢迎使用堆栈溢出!对不起,这不是StackOverflow的工作方式。形式为“我想做X,请给我提示和/或示例代码”的问题被认为是离题的。请访问并阅读,尤其是阅读您需要研究shell算法、循环、
读取
和重定向的文章。我不确定这是问题的所在(很难说,因为没有期望的输出),但如果您这样做,为什么要使用进程替换?您可以使用
sed'2r t2't1
来代替。是的,我使用的是进程替换,因为如果需要在第二个文件中执行某些操作(sed、awk、grep等),那么就很容易做到。您可以根据需要制作许多可能的场景。
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