我试图在文本文件中读取特定单词(Apple),我需要使用shell脚本在查找单词(Apple)旁边添加一个特定单词(Samsung)。
我知道如何使用shell脚本读取文件并找到特定的单词。
#!/bin/bash
LOGFILE =$1
if[-f $LOGFILE ];
then
awk '/Apple/'
else
echo "$LOGFILE not found "
fi
我需要知道如何在同一个文件中的查找单词旁边添加新单词。
示例
公司 Apple 成立于1976年4月1日,并于1977年1月3日成为 Apple 计算机公司。“计算机”一词已从2007年1月9日苹果公司将其名称命名为Apple,同时史蒂夫·乔布斯推出iPhone,反映出其转向消费电子产品的重点。
预期
公司 Apple 三星 成立于1976年4月1日,并于1977年1月3日成立为Apple Computer,Inc .. 2007年1月9日,当史蒂夫·乔布斯推出iPhone时,“计算机”一词从名称 Apple 三星 中删除,反映出将重点转向消费电子产品。
感谢。
答案 0 :(得分:3)
只需使用sed
:
sed -i 's/Apple /& Samsung /g' myfile.txt
-i
标志(就地)将输出写回覆盖源文件的文件。
&
表示“完全匹配”。
答案 1 :(得分:2)
首先,您的Bash语法已损坏。您的脚本不会按照书面形式运行。
其次,如果要在shell中严格执行此操作,则应使用shell parameter expansion执行替换,然后使用 fmt 命令重新生成段落。例如:
#!/bin/bash
LOGFILE="$1"
if [[ -r "$LOGFILE" ]]; then
while read; do
echo "${REPLY//Apple/Apple Samsung}"
done < "$LOGFILE" | fmt
else
echo "Error: $LOGFILE not readable" > /dev/stderr
exit 66
fi
答案 2 :(得分:0)
sed 's/Apple/& Samsung/g' $LOGFILE