我正在試着製作一個腳本,它只在外部大括號中提供代碼。我做了一個bash腳本,我可以給我喜歡的大括號。然後我想在我的bash腳本中使用sed。我的sed腳本做它必須做的事情,因爲當我在命令行上使用sed -f myscript時,輸出是正確的。但我現在有問題來替換我在sed腳本中給我的bash腳本的大括號。這裏是我的代碼:bash腳本中的sed腳本
#/bin/bash
if [[ $# != 2 ]]
then
echo "Gebruik: verwijderhaakjes.sh <openend symbool> <sluitend symbool>"
exit
fi
if [ "${#1}" != 1 -o "${#2}" != 1 ]
then
echo "Fout: openend en sluitend symbool moeten uit één enkel karakter bestaan"
exit
fi
var1=$1
var2=$2
sed "
$!{
/^[a-zA-Z]/{
H
d
}
/^${var2}/{
H
d
}
/^[ ][ ]*/{
d
}
}
/^[${var2}a-zA-Z]/{
H
}
x
s/${var1}\n//g
s/${var2}//g
p
"
正如你所看到的,我已經使用了雙引號,我用的sed腳本變量,所以我不知道爲什麼我沒有得到任何輸出。
例如:
testfile的:
aaa {
bbb
ccc {
ddd
eee
} fff {
ggg
hhh
}
iii
jjj
} kkk {
lll
mmm
} nnn
ooo
ppp
當我用我的sed腳本是這樣的:
sed -f myscript.sed test.txt
輸出是這樣的:
aaa kkk nnn
ooo
ppp
這是對。 但是,當我在bash中使用我的sed腳本時,我沒有得到任何輸出。 我想的是:
cat test | bash bashscript.sh "{" "}"
aaa kkk nnn
ooo
ppp
或
cat test | tr '}' ']' | tr '{' '[' | bash bashscript.sh "[" "]"
aaa kkk nnn
ooo
ppp
也許添加一些輸入樣本?並添加預期的輸出。 – konsolebox
@ user3371198對於長字符串,您可以使用[heredocs](https://en.wikipedia.org/wiki/Here_document#Unix_shells)。 – Biffen