有人在推特上提到了这一点。您的文本文件如下所示:
watermelon
taco
bacon
cheese您想要将文本"kitten“附加到"taco”的末尾。因此,所需的输出如下:
watermelon
tacokitten
bacon
cheese在bash中如何做到这一点?
发布于 2013-08-03 09:01:30
这并没有什么特别之处;只需使用sed程序:
sed 's/^\(taco\)$/\1kitten/' inputfile发布于 2013-08-03 10:30:18
虽然sed显然是一个更好的选择,但从学术上讲,下面是如何用纯bash (或zsh)实现它的:
while read line; do
if [ "$line" = "taco" ]; then
line=${line}kitten
fi
echo "$line"
done < test.in或者说得更地道一些:
while read line; do
[ "$line" = "taco" ] && line=${line}kitten
echo "$line"
done < test.in或在awk中
awk '/^taco$/{$0=$0"kitten"}1' test.in发布于 2013-08-03 10:51:12
明确地说:
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
donehttps://stackoverflow.com/questions/18028177
复制相似问题