我有一個包含以下字符串的示例文件。我需要通過刪除新行(\ n)將'if'和'endif'之間的所有字符串放在一行中(\ n) 示例如下所示。我需要使用sed或bash腳本的輸出。 任何人都可以幫助我嗎?Shell腳本模式識別
--sample字符串
if
ABC
BCD
DEF
endif
if
123
456
789
endif
--needed ouptput
ifABCBCDDEFendif
if123456789endif
我有一個包含以下字符串的示例文件。我需要通過刪除新行(\ n)將'if'和'endif'之間的所有字符串放在一行中(\ n) 示例如下所示。我需要使用sed或bash腳本的輸出。 任何人都可以幫助我嗎?Shell腳本模式識別
--sample字符串
if
ABC
BCD
DEF
endif
if
123
456
789
endif
--needed ouptput
ifABCBCDDEFendif
if123456789endif
假設該文件包含只有 IF-ENDIF塊:
awk '{ printf("%s", $0) } /^endif$/ { printf("\n") }'
中間間隔文本應保持不變,稍微更復雜的方法稱爲f或:
awk '/^if$/ { InIf = 1 }
/^endif$/ { InIf = 0 }
{ printf("%s", $0) }
!InIf { printf("\n") }'
假設你有文件TT1其中包含上面的字符串,然後使用
cat tt1 | sed 's/\n//g' | sed 's/endif/endif\n/g'
這裏是輸出ifABCBCDDEFendif if123456789endif –
你使用哪個版本的sed工作? –
如果你的文件file.txt的那麼
cat file.txt | tr -d "\n" | sed '[email protected]@endif\[email protected]'
你好邁克爾,這個b將所有if塊同時放入一行,但我需要單獨使用Ifendif塊,如上所示。 – HungryProgrammer
@HungryProgrammer對不起,我不關注。 awk腳本將每個ifendif塊放在它自己的行上。 –