我也需要被操縱的以下文件輸出(清理)SED多種模式,並刪除其餘
"2016-02-29;tracking;teamA;Name;45,0;7,0;315,0;659;"this is some free text";"911 Some Category";"again #pattern2 some free text #pattern1 #pattern3"
我需要篩選和保留多個模式並清除線的一部分的其餘部分。該行應該看起來像
"2016-02-29;tracking;teamA;Name;45,0;7,0;315,0;659;"this is some free text";"911 Some Category";"#pattern2 #pattern1 #pattern3"
所以我需要操縱線的一部分,並保持其餘部分。
我找到了尋找多種模式,如
sed -e "s/#pattern1/#pattern1/g" -e "s/#pattern2/#pattern2/g"
,我找到了刪除一切,但模式:
sed -e "s/.*#pattern1.*/#pattern1/g"
編輯: 我目前的解決方案:
我使用awk(delimiter;),egrep -o作爲行的一部分並粘貼到原始文件中。看起來是這樣的:
#!/bin/bash
FILE=$1
REGEXP="#(pattern1|pattern2|)"
paste $FILE <(cat $FILE |awk -F';' '{print$11}' | while read a; do a=$(echo $a | egrep -io "${REGEXP}" | sort -u) ; echo ";"${a//$'\n'/ } ; done)
儘管編寫一個sed腳本來完成這個任務並不困難,但它可能是一團糟,還有更好的選擇。 – 123
編輯您的問題以包含[mcve]。就目前來看,它非常模糊。 –
我認爲我misexplained。問題是,我沒有粘貼整條線,這導致了誤解。我在問題中添加它。 – JackOverflow