我是一名Linux初學者,我正在嘗試一個項目,它採用file.txt
中的每一行,並用每行的第一行代替第三個單詞。這是我的Shell代碼,但它似乎不工作。它一直用$field1
取代第三個詞,而不是其中的內容。Linux操作系統
#!/bin/bash
while IFS=: read -r field1;do
sed -e 's/[^:]*[^:]/$field1/3'
done < file.txt
我是一名Linux初學者,我正在嘗試一個項目,它採用file.txt
中的每一行,並用每行的第一行代替第三個單詞。這是我的Shell代碼,但它似乎不工作。它一直用$field1
取代第三個詞,而不是其中的內容。Linux操作系統
#!/bin/bash
while IFS=: read -r field1;do
sed -e 's/[^:]*[^:]/$field1/3'
done < file.txt
試試這個,這將在同一個文件替換:
#!/bin/sh
while read -r line
do
first=`echo $line | awk -F':' '{ print $1 }'`
last=`echo $line | awk -F':' '{ print $3 }'`
echo $line | sed "s/$last/$first/"
done < file.txt
輸入文件:
ashish:is:good
navin:is:good
how:are:you
輸出:
ashish:is:ashish
navin:is:navin
how:are:how
您可能想要將問題的標題更改爲som更相關的,如「使用變量與sed不工作」,在這種情況下,你可能會發現這個答案:http://stackoverflow.com/questions/19151954/how-to-use-variables-in-a-command-in -sed – Matthias
您的'sed'命令會消耗'file.txt'的其餘部分,因爲您沒有指定輸入文件。使用'while read'循環或'sed'(在大多數情況下最好使用後者),但不能同時使用,除非它們需要在單獨的流或文件上操作。 – tripleee
感謝您的領導! – TdFn