因此,有人在twitter上提到了這一點。你有一個文本文件,像這樣:如何將文本追加到bash中的多行文件中的單詞
watermelon
taco
bacon
cheese
要追加文本「小貓」到「塔科」的結束。因此,所需的輸出是這樣的:
watermelon
tacokitten
bacon
cheese
你怎麼能在bash中做到這一點?
因此,有人在twitter上提到了這一點。你有一個文本文件,像這樣:如何將文本追加到bash中的多行文件中的單詞
watermelon
taco
bacon
cheese
要追加文本「小貓」到「塔科」的結束。因此,所需的輸出是這樣的:
watermelon
tacokitten
bacon
cheese
你怎麼能在bash中做到這一點?
沒有什麼特別的關於這個;只需使用sed
程序:
sed 's/^\(taco\)$/\1kitten/' inputfile
雖然sed
顯然是一個更好的選擇,在學術上,這裏是如何做到這一點的純慶典(或zsh中):
或稍多地道:
while read line; do
[ "$line" = "taco" ] && line=${line}kitten
echo "$line"
done < test.in
或者在awk
:
awk '/^taco$/{$0=$0"kitten"}1' test.in
明確:
TARGET_FILE=/path/to/file.txt
LINENO=1 # line number counter
NEEDLE="taco"
for word in $(cat $TARGET_FILE)
do
if [ "$word" = $NEEDLE ]
then
#echo "Appending $word on line $LINENO..."
sed -i "${LINENO}s/.*/${word}TEXTAPPENDED/" $TARGET_FILE
break
fi
LINENO=$((LINENO +1)) #increase line number by 1
done
沒有理由括號。 's/^ taco $/tacokitten /'或's/^ taco $ /&kitten /'爲什麼? – Kevin