banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix tìm kiếm ra 1 list file, edit bằng sed nội dung của các file tìm thấy?  XML
  [Question]   tìm kiếm ra 1 list file, edit bằng sed nội dung của các file tìm thấy? 17/07/2013 23:30:38 (+0700) | #1 | 277537
zadops
Member

[Minus]    0    [Plus]
Joined: 24/10/2002 14:01:03
Messages: 3
Offline
[Profile] [PM]
chào các bác, các bác giúp em vụ này với ạ, em là newbie nên chưa thành thạo lắm về linux

hiện tại em có một loạt các file html, trong đấy có link down file source về, hiện h em muốn update lại name của file source đấy trong các file html trên

em định là sẽ dùng lệnh find để tìm ra các file html, xong dùng lệnh sed để edit lại nội dung trong các file đấy

nhưng làm thế nào để liên kết giữa 2 lệnh trên thì em chưa nghĩ ra được cách

có bác nào cho em xin cao kiến với ạ

em cảm ơn trước




[Up] [Print Copy]
  [Question]   tìm kiếm ra 1 list file, edit bằng sed nội dung của các file tìm thấy? 17/07/2013 23:44:04 (+0700) | #2 | 277539
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Ôi, bạn đăng ký hơn 10 năm rồi, hôm nay mới post bài đầu tiên à.

Bạn thử thế này xem:

Code:
$ cat 1.html
<a href="http://hvaonline.net">hvaonline</a>

$ find /path/to/document/root -type f -name '*.html' -print0 | xargs -0 sed -i.bak 's/hvaonline.net/vnhacker.org/g'

$ cat 1.html
<a href="http://vnhacker.org">hvaonline</a>


Nếu trong URL có dấu slash thì có thể đổi separator của `sed` thành # (để đỡ phải escape). Ví dụ:

Code:
$ cat 1.html
<a href="http://hvaonline.net/forum">hvaonline</a>

$ find /path/to/document/root -type f -name '*.html' -print0 | xargs -0 sed -i.bak 's#hvaonline.net/forum#vnhacker.org/portal#g'

$ cat 1.html
<a href="http://vnhacker.org/portal">hvaonline</a>

Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   tìm kiếm ra 1 list file, edit bằng sed nội dung của các file tìm thấy? 18/07/2013 12:54:41 (+0700) | #3 | 277559
zadops
Member

[Minus]    0    [Plus]
Joined: 24/10/2002 14:01:03
Messages: 3
Offline
[Profile] [PM]
nick em đăng kí từ hồi còn dial up, nhưng cũng chỉ để vào đọc tham khảo là chính thôi bác ợ smilie

đầu tiên là cảm ơn bác, câu lệnh đã chạy theo như mong muốn của em rồi, nhưng cho em hỏi cái này,
là tại sao phải dùng thêm những option find -print0 với xargs -0 vậy ạ
em bỏ 2 option đấy đi thì câu lệnh vẫn được thực hiện như bth

thêm câu hỏi nữa hơi không liên quan đến topic một chút, mà liên quan đến lệnh sed

đấy là sau khi edit xong file html, thì ở cuối mỗi dòng lại xuất hiện thêm kí tự ^M
ví dụ như thế này ạ
var sid="";^M
loader-121026.zip";^M

em dùng dos2unix convert lại thì kí tự trên biến mất, nhưng có option nào đối với lệnh sed để bỏ kí tự đấy đi được ko?
[Up] [Print Copy]
  [Question]   tìm kiếm ra 1 list file, edit bằng sed nội dung của các file tìm thấy? 18/07/2013 13:27:17 (+0700) | #4 | 277560
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

zadops wrote:

nhưng cho em hỏi cái này,
là tại sao phải dùng thêm những option find -print0 với xargs -0 vậy ạ
em bỏ 2 option đấy đi thì câu lệnh vẫn được thực hiện như bth
 

Bạn thử đổi tên mấy files html kia thành có khoảng trắng xem nó có chạy không smilie?

zadops wrote:

thêm câu hỏi nữa hơi không liên quan đến topic một chút, mà liên quan đến lệnh sed

đấy là sau khi edit xong file html, thì ở cuối mỗi dòng lại xuất hiện thêm kí tự ^M
ví dụ như thế này ạ
var sid="";^M
loader-121026.zip";^M
 

Khả năng là ^M đã nằm đó từ trước rồi, bạn chỉ không nhìn thấy nó thôi. Bạn soạn thảo mấy files html kia trên Windows rồi upload lên Linux à?

zadops wrote:

em dùng dos2unix convert lại thì kí tự trên biến mất, nhưng có option nào đối với lệnh sed để bỏ kí tự đấy đi được ko?
 

Code:
sed -e 's/^M$//'


Bạn ấn Ctrl-V rồi Ctrl-M thì nó sẽ hiển thị ^M nhé.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   tìm kiếm ra 1 list file, edit bằng sed nội dung của các file tìm thấy? 18/07/2013 14:31:25 (+0700) | #5 | 277561
zadops
Member

[Minus]    0    [Plus]
Joined: 24/10/2002 14:01:03
Messages: 3
Offline
[Profile] [PM]

quanta wrote:

Bạn thử đổi tên mấy files html kia thành có khoảng trắng xem nó có chạy không smilie?
 


em đã hiểu smilie

quanta wrote:

Khả năng là ^M đã nằm đó từ trước rồi, bạn chỉ không nhìn thấy nó thôi. Bạn soạn thảo mấy files html kia trên Windows rồi upload lên Linux à?
 


kí tự ^M trước khi edit bằng sed thì ko có bác ạ, chỉ xuất hiện sau khi edit. dùng lệnh cat hay soạn thảo bằng nano thì sẽ ko thấy, nhưng dùng vi/vim thì sẽ thấy xuất hiện ở cuối tât cả các dòng, trừ những dòng bị edit lại smilie

đành tạm thời hài lòng với dos2unix vậy
[Up] [Print Copy]
  [Question]   tìm kiếm ra 1 list file, edit bằng sed nội dung của các file tìm thấy? 18/07/2013 15:59:31 (+0700) | #6 | 277565
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

zadops wrote:

kí tự ^M trước khi edit bằng sed thì ko có bác ạ, chỉ xuất hiện sau khi edit.
 

Bạn có chắc không? Nội dung mấy files html kia từ đâu mà có?

zadops wrote:

dùng lệnh cat hay soạn thảo bằng nano thì sẽ ko thấy, nhưng dùng vi/vim thì sẽ thấy xuất hiện ở cuối tât cả các dòng, trừ những dòng bị edit lại smilie
 

Chứng tỏ là nó đã ở đây từ trước rồi chứ?

zadops wrote:

đành tạm thời hài lòng với dos2unix vậy
 

`sed` làm luôn được mà. Mình post ở trên rồi đấy.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   tìm kiếm ra 1 list file, edit bằng sed nội dung của các file tìm thấy? 19/07/2013 12:14:01 (+0700) | #7 | 277589
vd_
Member

[Minus]    0    [Plus]
Joined: 06/03/2010 03:05:09
Messages: 124
Offline
[Profile] [PM]
thay vì ^M thì có thể dùng \r
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|