我有两个文件,file1.txt
和file2.txt
。我想在 bash 脚本中使用sed
和阅读行。我想用 file2.txt
中的第 1 行替换file1.txt
中的第 1 行用户,依此类推......
文件1.txt:
xxxx1 <br>
xxxx2 <br>
xxxx3
文件2.txt:
{"Something":null,"ID":"user","group":{"id":"group1") <br>
{"Something":null,"ID":"user","group":{"id":"group1") <br>
{"Something":null,"ID":"user","group":{"id":"group1")
新 file2.txt 应该是这样的:
{"Something":null,"ID":"xxxx1","group":{"id":"group1") <br>
{"Something":null,"ID":"xxxx2","group":{"id":"group1") <br>
{"Something":null,"ID":"xxxx3","group":{"id":"group1")
有什么好主意吗?
使用awk
很容易:
awk 'NR == FNR { user[FNR] = $1; next } { sub("user", user[FNR]); print }' file1.txt file2.txt
但是,您也可以使用 paste
和 sed
来做到这一点:
paste file1.txt file2.txt | sed -r 's/([^ ]+)([^{]+)({.*)user(.*)/314/'
尝试使用以下命令:
for data in `awk '{print NR":"$1}' file1.txt` ; do row=`cut -d":" -f1 <<< ${data}` ;user=`cut -d":" -f2 <<< ${data}` ;sed -i ''$row's/"user",/"'$user'",/g' file2.txt ; done