Saya ingin menggunakan di sini-doc untuk perintah sed dan menyediakan file untuk dibaca dan file output.
Saya telah melihat di sini-Documents dari Advanced Bash Scripting guide tetapi tidak menyebutkan apa-apa tentang argumen reguler dalam menggunakan di sini-doc. Apakah itu mungkin?
Saya ingin mencapai sesuatu seperti berikut:
#!/bin/bash
OUT=/tmp/outfile.txt
IN=/my_in_file.txt
sed $IN << SED_SCRIPT
s/a/1/g
s/test/full/g
SED_SCRIPT
> $OUT;
Bantuan apa pun sangat dihargai.
sumber
-f -
dalamsed
tetapi membutuhkan substitusi proses:<( command )
.Dalam hal
sed
tidak mendukung membaca script daristdin
(menggunakan-f -
), Anda dapat menggunakan proses substitusi (tersedia dalambash
,zsh
,ksh93
):Tanda kurung penutup
)
harus mengikuti pembatas akhir (SEC_SCRIPT
) segera atau setelah baris baru. Dalam hal penggantian proses, Anda juga dapat menggunakanecho
alih-alih dokumen di sini:sumber
"$IN"
atau bahkantestfile.txt
) segera mengikuti perintah sed itu sendiri - ia ingin-e script
atau-f file
. Mengatur ulang jawaban @pabouk bekerja untuk saya:sed -f <( cat << ETC ... ETC) "$IN" > "$OUT"
SED_SCRIPT
.Mungkin pendekatan yang lebih baik:
:)
sumber