我也需要被操纵的以下文件输出(清理)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