我有一個輸入文件「B」,含行號,參照特定的 線在文件「A」。我需要使用「B」中的行號 來搜索文本模式,例如B的前3行是:內置搜索工具
385
527
547
所以我需要檢查「模式」是否在文件「A」 386和526, 528和548之間。我可以通過一些複雜的編程 來做到這一點,並在awk
等的幫助下循環,但我想知道在Unix(Solaris)中可用於搜索的內置 工具和選項,以使我的 代碼變得簡單,例如,如果有一個工具或選項來搜索給定線條範圍之間的圖案 ,這將是有用的。
我有一個輸入文件「B」,含行號,參照特定的 線在文件「A」。我需要使用「B」中的行號 來搜索文本模式,例如B的前3行是:內置搜索工具
385
527
547
所以我需要檢查「模式」是否在文件「A」 386和526, 528和548之間。我可以通過一些複雜的編程 來做到這一點,並在awk
等的幫助下循環,但我想知道在Unix(Solaris)中可用於搜索的內置 工具和選項,以使我的 代碼變得簡單,例如,如果有一個工具或選項來搜索給定線條範圍之間的圖案 ,這將是有用的。
沒有需要awk來在一個範圍內匹配(並打印)循環或複雜性:
awk 'NR>start && NR<end && /pattern/'
有點棘手文件B的內容的權利awk
狀態轉換,但這樣做的:
echo "($(awk 'NR==1{r1=$1;next}
NR>2{printf"||"}
{printf"(NR>%d&&NR<%d)",r1,$1;r1=$1}
END{if(NR<2)printf"0"}' B))&&/yourpattern/"|
awk -f- A
也許稍微簡單。將使用SED範圍到預過濾器,然後用grep用於圖案:
awk 'NR==1{r1=$1;next}
$1>r1+1{printf"%d,%dp\n",r1+1,$1-1;r1=$1}' B|
sed -nf- A|
grep 'yourpattern'
awk版本在文件B中的重複(或順序)範圍編號的錯誤情況下略好。我認爲sed版本將*包括* awk版本將正確排除它的(第一)行號。 –
非常感謝您的幫助。我正在通過你的代碼,給我幾分鐘,我一定會回來。與我的結果和命令! –
按你的算法取 第n和n + 1條線的編號爲B和搜索在這些行號之間的模式,我是儀式? –
我要搜索的文件A中的圖案,其在文件B呈現文件A中的文件「B」 圖案「線1和線2」之間 百通文件A中第2行和第3行之間的」數之間「在文件B中 –
該評論應成爲該問題的編輯。 –
你是正確的湯姆,正在努力尋找如何編輯問題,所以去了這個。 –