簡體   English   中英

在bash腳本中使用正則表達式

[英]Using regular expression in bash script

我是bash腳本的新手,但我想執行以下操作:

我想檢測FILE_1中的模式STRING_1“ STRING_2”,並將STRING_2附加到FILE_2

一種簡單的方法可以做到這一點?

您的問題相當模糊; 但是我猜你想要什么

如果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

您可以執行以下操作:

   sed 's/STRING_1 \"(.*)\"/\1/g' FILE_1 >FILE_2

sed在這里發生的事情是搜索FILE_1中第一個和第二個“ /”之間的所有內容,並將第二個和第三個“ /”之間的內容發送到FILE_2。

()組已分配給\\ 1,\\ 2等...,因此\\“之間的所有內容都是您的STRING_2。

grep -Po '(?<=aaa ")([^"]*)(?=")' FILE_1 >> FILE_2

如果我對問題的理解正確,那么您有一個包含以下內容的文件:

word1a "word1b"
word2a "word2b"
word3a "word3b"

您可以使用sed提取引號之間包含的值,然后重定向到文件

sed 's/.*"\(.*\)"/\1/' FILE_1 > FILE_2

您也可以使用此:

grep '^\s*STRING_1\s*\".*\"\s*$' FILE_1 | awk -F \" '{printf $2"\n"}' >> FILE_2

它將正確處理輸入文件的多個空白字符,並在FILE_2的末尾在STRING_2之后添加換行符。

這就是我現在所擁有的:

sed's / STRING_1 \\ s *:\\ s *“([^”] *)“ / \\ 1 / g'” FILE_1“ >> FILE_2;

我希望它檢測文件1中的以下模式:

STRING_1   :   "STRING_2"

並將STRING_2保存到文件2

但這是行不通的,它會向FILE_2附加很多隨機內容(不應該匹配)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM