簡體   English   中英

sed不替換Bash腳本中的字符

[英]sed not replacing characters in Bash script

我正在嘗試編寫一個Shell腳本來替換不是大寫字母的每個字符。 第一個參數是一個字符(它將替換其他字符),而其他參數是文件名。 當我在終端中嘗試Sed命令時,它工作正常,但是在我的腳本中,它僅打印出每行,但以給定字符開頭的行除外。 (我想要stdout上的結果。)

for i in "${@:2}"
do
   if [ -f $i ]
   then
      sed "s/[^A-Z]/${1}/g" $i
   else
      echo "$i does not exist"
   fi
done

您可以嘗試替換:

sed "s/[^A-Z]/${1}/g" $i

創建人:

sed -e "s/[^A-Z]/${1}/g" $i

要將每個字母替換為大寫,可以執行以下操作:

sed -e 's/\(.*\)/\U\1/' $i

我已經使用f1,f2,f3檢查了具有相同內容的腳本,您確定它不起作用嗎?

line1 Something Something Something
line2 Something Something Something
line3 Something Something Something

./input_test.sh x f1 f2 f3
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM