Thêm từ vào tệp văn bản bằng một lệnh đầu cuối duy nhất (không có trình soạn thảo)


22

Tôi mới dùng Linux. Tôi chỉ cần chỉnh sửa một .conftệp từ thiết bị đầu cuối mở và không sử dụng bất kỳ trình soạn thảo văn bản nào. Đó là, tôi có thể thêm từ và câu vào tệp cấu hình từ thiết bị đầu cuối mở không?

Ví dụ: command /home/.../file.conf -add 'abcd'đến dòng thứ 23 và cứ thế. Và cuối cùng, lưu nó.

Có thể tìm kiếm một từ cụ thể trong tệp cấu hình đó và thêm văn bản mới vào dòng tiếp theo của tệp cấu hình đó chỉ bằng lệnh không?


1
Hình như sedcó thể đến để giúp đỡ.
nitishch 17/03/2016

1
Đặt một câu hỏi duy nhất.
Avinash Raj

Câu trả lời:


39

Tôi thường làm theo cách này khi tôi đang lập trình kịch bản của mình để làm giống như những gì bạn đang yêu cầu nhưng theo lập trình.

echo "Hello you!" >> myfile.txt
echo "this is 2nd line text" >> file.txt
echo "last line!" >> file.txt

Voila! Bạn đã nhận nó. Điều quan trọng cần lưu ý >>có nghĩa là thêm dòng mới vào tệp hiện có trong khi >chỉ cần ghi đè lên mọi thứ.


Cảm ơn bạn đã trả lời nhanh chóng của bạn. Nhưng tôi cần phải thêm như hơn 3000words vào dòng thứ 23 của tệp .conf của mình một cách tuần tự. Có cách nào dễ dàng hơn không?
dùng259060

20

Thêm từ và câu vào tệp cấu hình từ thiết bị đầu cuối mở có thể dễ dàng đạt được với sed.

sed -i '23iabcd' file.conf

chèn vào dòng 23 văn bản abcdvào tập tinfile.conf

-ikhông sửa đổi trực tiếp để tập tin file.conf.

Nếu bạn muốn sử dụng awkthì:

awk -v n=23 -v s="abcd" 'NR == n {print s} {print}' file > file.conf

Sau đây thêm một dòng sau SearchPotype.

sed -i '/SearchPattern/aNew Text' SomeFile.txt

Nó chèn Văn bản mới một dòng bên dưới mỗi dòng có chứa SearchPotype.

Để thêm hai dòng, bạn có thể sử dụng a \và nhập một dòng mới trong khi nhập Văn bản mới.

 sed -i '/pattern/a \
line1 \
line2' inputfile

5

Bạn cũng có thể sử dụng printflệnh.

Để thêm dòng vào tập tin của bạn

$ printf "\nThis is a new line to your document" >> file.txt

Để ghi đè tập tin

$ printf "This overwrites your file" > file.txt

0
awk '{if ($1 ~ /regex/) print $1 "content to be added"; else print $1}' < inputfile > outputfile

Ghi chú:

  • regex là một biểu thức chính quy (còn được gọi là regex), nó xác định các tiêu chí tìm kiếm. Biểu thức chính quy cho phép tìm kiếm rất tùy biến và cú pháp được hiểu bởi awk có trong hướng dẫn . Trong trường hợp đơn giản nhất - tìm kiếm một chuỗi "như nó là", theo từng ký tự - chỉ cần đặt dấu gạch chéo ngược trước các ký tự đặc biệt (xem hướng dẫn để biết danh sách các ký tự đặc biệt)

Làm thế nào nó hoạt động:

  • mở inputfileđể đọc các dòng đầu vào, xóa outputfilevà mở nó để viết các dòng đầu ra
  • cho mỗi dòng, chạy khối trong dấu ngoặc nhọn:
    • nếu dòng khớp với biểu thức chính quy, thì hãy xuất dòng có nội dung được nối thêm
    • mặt khác, xuất ra cùng một dòng.

0

Tôi tìm thấy một giải pháp cho câu hỏi của riêng tôi bằng cách sử dụng edlệnh

ed -s /home/.../abc.conf <<< $'23i\ntext\n.\nwq'

Văn bản có thể chứa 27 dòng. Bạn có thể sao chép 27 dòng từ tệp văn bản và dán 27 dòng vào tệp cấu hình của mình. Nhưng tôi cần chạy edlệnh đồng thời để thêm văn bản vào cùng một tệp cấu hình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.