我是bash脚本的新手,但我想做以下事情:
我想在FILE_1中检测到STRING_1“STRING_2”模式,并将STRING_2附加到FILE_2
这是一种简洁的方法吗?
答案 0 :(得分:1)
你的问题相当模糊;但我猜你想要什么
如果FILE_1中存在STRING_1,请将STRING_2附加到FILE_2
answer=`grep -c STRING_1 FILE_1`
if [ "$answer" -gt 0 ]
then
echo "$STRING_2" >> FILE_2
fi
答案 1 :(得分:1)
您可以执行以下操作:
sed 's/STRING_1 \"(.*)\"/\1/g' FILE_1 >FILE_2
这里发生的事情是,sed正在焚烧FILE_1中第一个和第二个'/'之间的所有内容,并将第二个和第三个'/'之间的内容发送到FILE_2。
()组被分配到\ 1,\ 2等...所以在\ s之间的所有内容都是你的STRING_2。
答案 2 :(得分:1)
grep -Po '(?<=aaa ")([^"]*)(?=")' FILE_1 >> FILE_2
答案 3 :(得分:0)
如果我正确理解了这个问题,那么你有一个包含以下内容的文件:
word1a "word1b"
word2a "word2b"
word3a "word3b"
您可以使用sed提取引号之间包含的值,然后重定向到文件
sed 's/.*"\(.*\)"/\1/' FILE_1 > FILE_2
答案 4 :(得分:0)
你也可以使用它:
grep '^\s*STRING_1\s*\".*\"\s*$' FILE_1 | awk -F \" '{printf $2"\n"}' >> FILE_2
它正确处理输入文件的多个空白字符,并在FILE_2末尾的STRING_2后附加换行符。
答案 5 :(得分:0)
这就是我现在所拥有的:
sed's / STRING_1 \ s *:\ s *“([^”] *)“/ \ 1 / g'”FILE_1“&gt;&gt; FILE_2;
我希望它在文件1中检测以下模式:
STRING_1 : "STRING_2"
并将STRING_2保存到文件2
但这不起作用,它会向FILE_2添加大量随机内容(不应该匹配)