Im cố gắng grep cho tên tệp có đường dẫn đầy đủ trong tệp chứa thứ gì đó như đầu ra 'ls -l', nhưng không khớp với nó đúng.Kết hợp từ chính xác grep (-w) không hoạt động với đường dẫn tệp trong tệp văn bản
dòng trong kịch bản shell mà không tìm kiếm chuỗi
pcline=`grep -w "$file1" $file2` # grep for file1 in file2 contents
nếu tôi hiển thị các lệnh, đầu ra của lệnh trông giống như dưới đây
grep -w run /home/rajesh/rootfs.layout
Expected
lrwxrwxrwx 1 root root 3 Aug 28 run
Actual
lrwxrwxrwx 1 root root 7 Aug 28 bin/run-parts
lrwxrwxrwx 1 root root 3 Aug 28 run
-rwxr-xr-x 1 root root 303 Aug 28 tests/aes/run.sh
-rwxr-xr-x 1 root root 445 Aug 28 tests/auto_ui/run.sh
-rwxr-xr-x 1 root root 320 Aug 28 tests/available_memory/run.sh
-rwxr-xr-x 1 root root 308 Aug 28 tests/fonts/run.sh
-rwxr-xr-x 1 root root 309 Aug 28 tests/html_config_page/run.sh
-rwxr-xr-x 1 root root 361 Aug 28 tests/ipc/run.sh
-rwxr-xr-x 1 root root 304 Aug 28 tests/JSON/run.sh
-rwxr-xr-x 1 root root 303 Aug 28 tests/log4cplus_cpp/run.sh
-rwxr-xr-x 1 root root 301 Aug 28 tests/log4cplus_c/run.sh
-rwxr-xr-x 1 root root 751 Aug 28 tests/msm_basic/run.sh
-rwxr-xr-x 1 root root 472 Aug 28 tests/res_man_dependency/run.sh
-rwxr-xr-x 1 root root 465 Aug 28 tests/res_man_ipc/run.sh
-rwxr-xr-x 1 root root 789 Aug 28 tests/res_man_multi_process/run.sh
-rwxr-xr-x 1 root root 469 Aug 28 tests/res_man_private_client/run.sh
-rwxr-xr-x 1 root root 492 Aug 28 tests/res_man_public_client/run.sh
-rwxr-xr-x 1 root root 311 Aug 28 tests/virt_mem_config/run.sh
lrwxrwxrwx 1 root root 6 Aug 28 var/run]
Bí quyết tôi đã cố gắng là thêm một màu trắng không gian, được đảm bảo trong tệp đầu vào của tôi, điều này hoạt động trong bảng điều khiển, nhưng không phải khi được gán cho một biến.
grep " tests/aes/run.sh" /home/rajesh/rootfs.layout
dòng trong kịch bản
pcline=`grep \"" $file1"\" $file2` # grep for file1 in file2 contents
Xin vui lòng cho tôi biết nếu tôi đã cam kết bất kỳ lỗi nào trong kịch bản này.
Tại sao kết quả không mong muốn đó? Một từ được giới hạn bởi một ký tự không phải chữ số. Vì vậy, 'grep -w run ...' sẽ khớp với một dòng với 'foo.run.bar', ví dụ. Bạn đã thử 'pcline = \' grep "$ file1" $ file2 \ '' không có dấu trích dẫn thoát? – lurker
@mbratch, xin lỗi nó không hoạt động với => pcline = 'grep" $ filename "$ pc_layout' – rajeshk
Thú vị. Tôi giả sử rằng có điều gì khác trong kịch bản của bạn không hiển thị trong bài đăng của bạn. Nó làm việc cho tôi khi tôi chạy một trường hợp thử nghiệm, nhưng có vẻ như bạn đã nhận được một giải pháp rồi. Mát mẻ. – lurker