所以我是bash linux的新手,我正在尝试修复一个.txt文件。
我有一个类似如下的.txt文件:
blueberry, "yummy", 12345, "I love fruit and eating apples"
blueberry, "tasty", 4455, "fruit is good for you"
blueberry, "yum", 109833, "I go crazy for fruit"
blueberry, "wooohh", 1347672, "I love fruit and
eating apples"
blueberry, "yummy yummy", 1023433, "I love fruit more than my dog"
blueberry, "yummy", 12345, "I love fruit and eating apples"
blueberry, "something good to eat", 42, "fruit is the
greatest thing EVER"
blueberry, "tasty", 4455, "fruit is good for you"
blueberry, "yum", 109833, "I go crazy for fruit"我想创建一个新的.txt文件,如下所示:
blueberry, "yummy", 12345, "I love fruit and eating apples"
blueberry, "tasty", 4455, "fruit is good for you"
blueberry, "yum", 109833, "I go crazy for fruit"
blueberry, "wooohh", 1347672, "I love fruit and eating apples"
blueberry, "yummy yummy", 1023433, "I love fruit more than my dog"
blueberry, "yummy", 12345, "I love fruit and eating apples"
blueberry, "something good to eat", 42, "fruit is the greatest thing EVER"
blueberry, "tasty", 4455, "fruit is good for you"
blueberry, "yum", 109833, "I go crazy for fruit"(因此,两行上的随机句子被放回一起)
到目前为止,我已经尝试使用echo,如下所示:
while read p; do #for every line in the .txt file
if[[ $p == "blueberry"* ]] #if the line starts with 'blueberry'
echo -n "$p" >> newfruit.txt #add the line to newfruit.txt without a new line
else
echo " $p" >> newfruit.txt #add to the current line
fi
done <fruit.txt但它只返回与我尝试使用printf和echo -e时完全相同的.txt文件,并返回相同的结果
如果您有任何建议或建议,我们将不胜感激!谢谢!
发布于 2015-08-25 08:58:12
有几个语法错误:if[[需要一个空格,if需要一个then。除此之外,你的逻辑有点不正确。这应该可以做到:
while read p; do
if [[ $p == "blueberry"* ]]; then
if [[ -n "$notfirst" ]]; then # in all blueberry lines but the first,
echo >> newfruit.txt # make sure the previous line is terminated
fi
echo -n "$p" >> newfruit.txt # then wait for possible continuation
else
echo -n " $p" >> newfruit.txt # there's the continuation!
fi
notfirst=1 # don't add newline before the first line
done < fruit.txt
if [[ -n "$notfirst" ]]; then # do add the newline after the last line
echo >> newfruit.txt
fi发布于 2015-08-25 13:52:18
awk '{printf $0}/"$/{printf "\n"}' fruit.txt打印每一行,不带换行符。如果行以“结尾,则打印换行符
https://stackoverflow.com/questions/32193902
复制相似问题