2016-06-07 1 views
-3

두 파일 file1.txtfile2.txt이 있습니다. sed을 사용하고 bash 스크립트에서 행을 읽고 싶습니다.SED와 nextline을 사용하는 Bash 스크립트

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 나는 ... 등등 file2.txt에서 1 행과 file1.txt

은 File2.txt을 행 1 사용자를 교체하려면 .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/' 
관련 문제