Sử dụng này để ống đầu vào của bạn thành:
sed 's/^/"/;s/$/"/'
^
là neo cho sự khởi đầu dòng và $
neo cho cuối dòng. Với dòng sed
, chúng tôi sẽ thay thế dòng bắt đầu và kết thúc dòng với số lần lượt là "
và "
.
Ví dụ:
$ echo -e "name,id,2\nname,id,3\nname,id,4"|sed 's/^/"/;s/$/"/'
"name,id,2"
"name,id,3"
"name,id,4"
mà không sed
:
$ echo -e "name,id,2\nname,id,3\nname,id,4"
name,id,2
name,id,3
name,id,4
tập tin của bạn dường như có DOS kết thúc dòng. Đường ống qua số dos2unix
trước tiên.
Proof:
$ cat test.txt
name,id,2
name,id,3
name,id,4
$ sed 's/^/"/;s/$/"/' test.txt
"name,id,2
"name,id,3
"name,id,4
$ cat test.txt|dos2unix|sed 's/^/"/;s/$/"/'
"name,id,2"
"name,id,3"
"name,id,4"
Lệnh sed của bạn hoạt động trên máy tính. Bạn có thể bỏ qua dấu gạch chéo ngược trước dấu ngoặc kép vì chúng vô dụng trong một chuỗi trích dẫn đơn. – Scharron
hmmm, vâng, điều này thật kỳ lạ. Tôi nhận được một báo giá gấp đôi như nhau. Tệp gốc của tôi là file.csv - có danh sách dài "tên, id, [[: num:]]". Tại sao nó không hoạt động? – minerals
'g' là không cần thiết, nhưng nó không gây ra vấn đề của bạn. Nền tảng của bạn là gì? –