Viết bắt đầu từ một số dòng nhất định trong một tệp văn bản


9

Trong một tập lệnh bash tôi muốn viết một số dòng vào một tệp văn bản, nhưng tệp này đã được sử dụng trước đó và có các văn bản trong đó. Vì vậy, tôi muốn lặp lại một số văn bản bổ sung trong đó, bắt đầu từ một số dòng nhất định trong tệp.

Tôi muốn một cái gì đó như thế này:

echo -fromLineNumber 33 -e "anything" >> textPath

Câu trả lời:


15

Bạn có thể sử dụng sedđể viết tại một dòng cụ thể.

thử cái này:

    sed -i '33ianything' textpath

hoặc là

    sed -i '33i\anything' textpath

Nó sẽ chèn "bất cứ thứ gì" vào dòng số 33.


Nó nên hoạt động. Hoạt động tốt với tôi trong bash 4.2 và sed 4.2 trong ubfox.
kumarprd

1
chờ một chút tôi sẽ thử lại
Ahmed Zain El Dein

Cảm ơn nó hoạt động, đó là sai lầm của tôi ở nơi đầu tiên cảm ơn bạn rất nhiều
Ahmed Zain El Dein

Tôi có thể viết nó như thế này sed -i '$numberkanything' textPathkhông? Tôi phải ghi lại số dòng trực tiếp
Ahmed Zain El Dein

3
@AhmedZainElDein, shell sẽ không mở rộng các biến trong các dấu ngoặc đơn. Ngoài ra, bạn phải nói với shell cách phân biệt tên biến với văn bản sau:sed -i "${number}i\anything" file
glenn jackman

2

Để giữ 32 dòng đầu tiên và thêm văn bản mới sau đó:

head -n 32 oldfile > newfile
echo anything >> newfile
echo goes >> newfile
echo here >> newfile

Để chèn một số văn bản sau dòng 32 của một tệp:

sed -e '32s/$/\nanything\ngoes\nhere/' oldfile > newfile

cảm ơn bạn, nhưng tôi muốn thêm vào tệp văn bản cũ các văn bản mới của tôi sau một số dòng nhất định không thêm vào tệp mới, tôi hy vọng rằng tôi có thể làm cho mình rõ ràng?
Ahmed Zain El Dein
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.