2011-07-06 27 views
1

我試圖刪除包含版權的字符(除其他事項外,在bash腳本)的所有行,但它不工作:版權的字符在sed

cat $srcdir/$txtfile | 
sed "s/.*©.*/d" | 
cat > $tgtdir/$txtfile 

什麼都不做。然而,在終端中運行

echo blah © blah | sed "s/.*©.*//g" 

正確地產生

blah blah 

我使用賽特設置爲UTF-8編碼的,所以上面的代碼的第一個塊正是我在編輯器中看到。關於如何在編輯器中表現sed的任何想法都能認出它?

回答

0

您可以嘗試使用的©八進制表示這是251

$ echo blah © blah | sed 's/\o251/X/' 
blah blah 

這是「哦」,而不是一個零。

刪除包含該字符線,採用grep使用

sed '/\o251/d' 
+0

我在最後一行改爲0〜O(錯字,我猜),和現在的工作, 謝謝! – levinia

+0

@levinia - 謝謝指出!更新了我的答案。 –

1

sed命令看起來不正確。嘗試

sed '/©/d' 

然後檢查在運行腳本的shell中設置了適當的語言環境變量。比如,我用

LC_ALL=en_US.UTF-8 
0

會轉而

grep -v '©'