2016-06-07 70 views
-3

我有两个文件,file1.txtfile2.txt。我想使用sed并在bash脚本中读取行。我想从file2.txt等与第1行,以取代第1个用户file1.txt ...使用SED和nextline的Bash脚本

FILE1.TXT:

xxxx1 <br> 
xxxx2 <br> 
xxxx3 

FILE2.TXT:

{"Something":null,"ID":"user","group":{"id":"group1") <br> 
{"Something":null,"ID":"user","group":{"id":"group1") <br> 
{"Something":null,"ID":"user","group":{"id":"group1") 

新文件2 .txt应该是这样的:

{"Something":null,"ID":"xxxx1","group":{"id":"group1") <br> 
{"Something":null,"ID":"xxxx2","group":{"id":"group1") <br> 
{"Something":null,"ID":"xxxx3","group":{"id":"group1") 

任何好点子?

+0

这是一个不错你在那里有一套要求。你坚持什么部分?你有任何代码向我们展示? – Kenster

+0

在'awk'中很简单。 –

+0

也许awk最好去,有什么建议吗? – Lin

回答

0

尝试用下面的命令:

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 
+0

这是一个效率极低的循环。一个'awk'调用可以完成所有的工作。 –

2

这是很容易使用awk

awk 'NR == FNR { user[FNR] = $1; next } { sub("user", user[FNR]); print }' file1.txt file2.txt 

然而,你也可以做到这一点使用pastesed

paste file1.txt file2.txt | sed -r 's/([^ ]+)([^{]+)(\{.*)user(.*)/\3\1\4/'