[英]How sed command used in shell script
我在使用SED命令的地方有shell腳本,正在讀取文件並從每個語句中刪除HELLO之后的所有字符,但是仍然得到空值
file=commit.txt
while IFS= read line
do
commitid=$line | sed "s/ HELLO.*'[^']*'/ /"
echo $line | sed "s/ HELLO.*'[^']*'/ /" /* Not removing character*/
echo $commitid /* Returning null*/
done <"$file"
我的文件有2條陳述
dummy statement Hello world
dummy 1 statement Hello Mike
預期產量
dummy statement
dummy 1 statement
如何解決這個問題?
這是簡單的工作sed
如下。
file="commit.txt"
sed 's/Hello.*//g' "$file"
您需要的是bash中的“命令替換”。 為此,您必須在命令中加上$()
while IFS= read line
do
val1=$(echo "$line"|sed 's/HALLO/TEST/')
val2=$(echo "$val1"|sed 's/TEST/XYZ/')
echo $val2
done < test.txt
我使用了一個更簡單的sed表達式來查看它是否可以與我的文本文件一起使用。 如您所見,我首先用TEST替換HALLO,然后在下一行的XYZ中替換TEST。 因此,您可以看到變量內容已處理並傳遞給下一個評估。
輸入:
eins HALLO zwei
eins HALLO zwei
eins HALLO zwei
eins HALLO zwei
輸出:
eins XYZ zwei
eins XYZ zwei
eins XYZ zwei
eins XYZ zwei
更新:提供輸入數據后,腳本可以是:
while IFS= read line
do
val=$(echo "$line"|sed 's/Hello.*$//')
echo $val
done < test.txt
但實際上這里不需要腳本:
sed 's/Hello.*$//' test.txt > output.txt
做同樣的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.