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/'