簡體   English   中英

sed命令在Shell腳本中如何使用

[英]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.

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