我得到的文件反覆包含字符串\n\n}
,我需要用\n}
(刪除兩條換行符之一)替換這樣的字符串。
因爲這些文件是通過bash腳本動態生成的,所以我需要在腳本中嵌入替換代碼。Bash替換文件中的' n n}'字符串
我試着用下面的命令,但它不工作:
cat file.tex | sed -e 's/\n\n}/\n}/g' # it doesn't work!
cat file.tex | perl -p00e 's/\n\n}/\n}/g' # it doesn't work!
cat file.tex | awk -v RS="" '{gsub (/\n\n}/, "\nb")}1' # it does work, but not for large files
[沒用使用'cat'(https://en.wikipedia.org/wiki/Cat_(UNIX)#Useless_use_of_cat) – Biffen
在Perl中,'-00'意味着使用段落模式,這意味着讀入'$ _'的每一行都以'\ n \ n +'結尾(而不是根據默認行讀取的'\ n')。這意味着他們之後永遠不會有'}'。你想要的是咕嚕輸入,即'-0777'。 – TLP
補充@ TLP的評論:類似地,'awk'中的'-v RS =「」'也會激活_paragraph_模式,所以'gsub'永遠不能匹配'\ n \ n'。因此,該命令相當於'awk -v RS =''''file.tex',它有效地簡化了空行。 要真正閱讀_entire_文件,你必須使用'-v RS ='^ $''和_GNU_'awk',或者使用BSD'awk',像'-v RS = $'\ 3' '(任何_single_ char。不希望在輸入中)。 – mklement0