在 POSIX shell 中使用while 循环来处理文本通常被认为是不好的做法吗?
正如Stéphane Chazelas 所指出的,不使用 shell 循环的一些原因是概念、可靠性、易读性、性能和安全性。
这个答案解释了可靠性和易读性方面:
while IFS= read -r line <&3; do
printf '%s\n' "$line"
done 3< "$InputFile"
Run Code Online (Sandbox Code Playgroud)
为了性能,从文件或管道读取时,while
循环和读取非常慢,因为内置的read shell一次读取一个字符。
怎么样的概念和安全性方面?
我想在文本文件中搜索带有 'word1' XOR 'word2' 的行。所以它应该输出带有 word1、word2 的行,而不是带有这两个词的行。我想使用 XOR 但我不知道如何在 linux 命令行中编写它。
我试过:
grep 'word1\|word2' text.txt
grep word1 word2 text.txt
grep word1 text.txt | grep word2
grep 'word1\^word2' text.txt
Run Code Online (Sandbox Code Playgroud)
还有更多,但无法成功。