Questions tagged «newlines»

1
shebang行无法与cr-lf一起使用
为什么以下基本脚本的shebang部分不起作用: $ cat hello.sh #! /bin/sh echo Hello $ ./hello.sh bash: ./hello.sh: /bin/sh^M: bad interpreter: No such file or directory $ cat hello.py #! /usr/bin/env python3 print("Hello") $ ./hello.py : No such file or directory 而手动调用解释器则有效: $ sh hello.sh Hello $ python3 hello.py Hello

1
回车命令回车
我正在练习带有选项\r(回车)的echo命令,如下所示。 echo -e "This is \r my college" 输出: my college 但是当我在\r下面再添加一个单词时 echo -e "This is the \r my college" 然后它给我输出像: my college the 另一个例子 echo -e "This is \r valid data" valid data echo -e "This is not a \r valid data" valid data a 所以,我想知道这里回车的实际目的是什么?
9 shell  echo  newlines 

4
如何查找末尾没有空行的文件?
我在当前目录的子目录中有文件,文件末尾可能没有换行;如何找到结尾没有换行符的文件? 我已经试过了: find . -name '*.styl' | while read file; do awk 'END{print}' $file | grep -E '^$' > /dev/null || echo $file; done 但这不起作用。 awk 'END{print}' $file与一样在空的新行之前打印该行tail -n 1 $file。

2
sed:将整个文件读入模式空间而不会在单行输入中失败
将整个文件读入模式空间对于替换换行符&c很有用。并且有很多实例建议以下几点: sed ':a;N;$!ba; [commands...]' 但是,如果输入仅包含一行,则失败。 例如,在两行输入的情况下,每一行都要执行替换命令: $ echo $'abc\ncat' | sed ':a;N;$!ba; s/a/xxx/g' xxxbc cxxxt 但是,对于单行输入,不执行替换: $ echo 'abc' | sed ':a;N;$!ba; s/a/xxx/g' abc 如何编写sed命令一次读取所有输入而又没有此问题的命令?
9 sed  newlines 

6
使用猫通配符打印强制换行
我想在bash中使用带有通配符的cat以便将多个小文件(每个文件是一个句子)打印到标准输出。但是,单独的文件内容不是用换行符分隔的,为了方便阅读,我希望这样做。 如何在此命令中添加某种文件分隔符?

3
如何在不删除尾随换行符的情况下将stdin捕获为变量?
在shell脚本中... 如何在不删除尾随换行符的情况下将stdin捕获为变量? 现在我已经尝试: var=`cat` var=`tee` var=$(tee) 在所有情况下$var,输入流都不会包含尾随换行符。谢谢。 还:如果输入中没有尾随换行符,则解决方案不得添加。 根据接受的答案进行更新: 我在代码中使用的最终解决方案如下: function filter() { #do lots of sed operations #see https://github.com/gistya/expandr for full code } GIT_INPUT=`cat; echo x` FILTERED_OUTPUT=$(printf '%s' "$GIT_INPUT" | filter) FILTERED_OUTPUT=${FILTERED_OUTPUT%x} printf '%s' "$FILTERED_OUTPUT" 如果您想查看完整代码,请参阅github页面的expandr,这是我为信息安全目的而开发的一个开源git关键字-扩展过滤器外壳脚本。根据.gitattributes文件(可以是特定于分支的文件)和git config中设置的规则,无论何时将其签入或签出存储库,git都会通过expandr.sh Shell脚本通过管道传输每个文件。(这就是为什么保留任何尾随的换行或缺少换行的关键。)这使您可以清除敏感信息,并交换不同的特定于环境的值集以进行测试,暂存和实时分支。

1
为什么在vim的插入模式下看不到两个不同文件之间的区别?
让我们创建两个文件: $ echo -n 'test' > test.txt $ wc test.txt 0 1 4 test.txt 该文件test.txt不包含尾随换行符。 $ echo 'test' > test_n.txt $ wc test_n.txt 1 1 5 test_n.txt 该文件test_n.txt包含尾随换行符。 上面两个文件明显不同,但是vim在插入模式下两个文件的预览没有任何区别: $ vim test.txt $ vim test_n.txt 为什么没有区别(换行或某些特殊区别)? vim在插入模式下如何添加或删除这样的附加字符?
8 vim  newlines  vi-mode 

2
测试变量是否包含换行符(POSIX)
我知道有些外壳接受这种测试: t() { [[ $var == *$'\n'* ]] && res=yes || res=no printf '%s ' "$res"; } var='ab cd' t var='abcd' t echo 执行时: $ bash ./script yes no 什么是POSIX(破折号)工作等效项 以下是可靠的测试方法吗? nl=' ' t() { case "$var" in *$nl* ) res=yes ;; * ) res=no ;; esac printf '%s ' …

2
读取-a数组-d'\ n'<foo,退出代码1
如果我尝试执行 read -a fooArr -d '\n' &lt; bar 退出代码为1-即使它完成了我想要的操作;将每行放入bar数组的元素中fooArr(使用bash 4.2.37)。 有人可以解释为什么会这样吗 我发现了其他解决方法,例如下面的方法,所以这不是我要的。 for ((i=1;; i++)); do read "fooArr$i" || break; done &lt; bar 要么 mapfile -t fooArr &lt; bar
8 bash  newlines  read 

1
解压缩使用^ M创建的目标目录时
我正在尝试使用Shell脚本文件(.sh)解压缩文件夹。它正在解压缩zip文件夹中的文件,但是我创建的目标目录以^ M结尾, 我在.sh文件中使用此命令 unzip /tmp/mram/zip/ApNonProjectExpVO.zip -d /tmp/mram/zip/ 并在腻子中显示日志为 Test.sh Tue Jan 10 23:21:21 CST 2017 Archive: /tmp/mram/zip/ApNonProjectExpVO.zip creating: /tmp/mram/zip/^M/ApNonProjectExpVO/ inflating: /tmp/mram/zip/^M/ApNonProjectExpVO/ApNonProjectExpVO.xml
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.