正确解释换行符
Correctly interpret newline characters
我有一个文件需要逐字解析,并且只对某些字词进行更改。我的 bash 脚本在所有情况下都有效,但保留换行符。我构建了一个最小的例子如下:
#!/bin/bash
# contents of myscript.sh
toks=( $* )
for tok in ${toks[*]}; do
# make changes to $tok if need be
printf "$tok "
done
希望使用如下:
cat filename.txt | xargs myscript.sh
其中 filename.txt 可能看起来像
word1 word2
word3
在这种情况下,预期输出与输入相同,但我只是得到
word1 word2 word3
用正则表达式代替分词怎么样?
$ echo -e "word1 word2
word3" | perl -pe 's/\bword[12]\b/wordX/g'
wordX wordX
word3
虽然这需要 perl,但也有 PCRE 的替代实现。
试试这个:
#!/bin/bash
while read -ra line; do
for tok in "${line[@]}"; do
# make changes to $tok if need be
printf "%s " "$tok"
done
echo
done
我有一个文件需要逐字解析,并且只对某些字词进行更改。我的 bash 脚本在所有情况下都有效,但保留换行符。我构建了一个最小的例子如下:
#!/bin/bash
# contents of myscript.sh
toks=( $* )
for tok in ${toks[*]}; do
# make changes to $tok if need be
printf "$tok "
done
希望使用如下:
cat filename.txt | xargs myscript.sh
其中 filename.txt 可能看起来像
word1 word2
word3
在这种情况下,预期输出与输入相同,但我只是得到
word1 word2 word3
用正则表达式代替分词怎么样?
$ echo -e "word1 word2
word3" | perl -pe 's/\bword[12]\b/wordX/g'
wordX wordX
word3
虽然这需要 perl,但也有 PCRE 的替代实现。
试试这个:
#!/bin/bash
while read -ra line; do
for tok in "${line[@]}"; do
# make changes to $tok if need be
printf "%s " "$tok"
done
echo
done