Bash 从文件中读取一行,将该行替换为另一个文件
我不熟悉Linux脚本。 我需要一个文件中的行,然后一行一行地将其写入另一个文件的特定行中 示例: File1.txt: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
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