相关疑难解决方法(0)

如何用Vim中的换行符替换字符?

我正在尝试用,新行替换当前文件中的每个:

:%s/,/\n/g 
Run Code Online (Sandbox Code Playgroud)

但它插入的内容看起来像是一个^@而不是实际的换行符.该文件不是DOS模式或任何东西.

我该怎么办?

如果你像我一样好奇,请检查问题为什么\ raim的换行?同样.

vi vim replace newline escaping

1870
推荐指数
11
解决办法
75万
查看次数

使用sed删除空行

我试图使用sed删除空行:

sed '/^$/d'
Run Code Online (Sandbox Code Playgroud)

但我没有运气.

例如,我有这些行:

xxxxxx


yyyyyy


zzzzzz
Run Code Online (Sandbox Code Playgroud)

我希望它像:

xxxxxx
yyyyyy
zzzzzz
Run Code Online (Sandbox Code Playgroud)

应该是什么代码?

unix linux sed

312
推荐指数
9
解决办法
43万
查看次数

'\ r':找不到命令 - .bashrc/.bash_profile

我有窗口,使用Cygwin,试图JAVA_HOME永久设置我的.bashrc文件.

.bashrc中:

export PATH="$JAVA_HOME/bin:$PATH"  
export JAVA_HOME=$JAVA_HOME:"/cygdrive/c/Program Files (x86)/Java/jdk1.7.0_05"
Run Code Online (Sandbox Code Playgroud)

.bash_profile文件:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi
Run Code Online (Sandbox Code Playgroud)

运行cygwin:

-bash: $'\377\376if': command not found
-bash: $'then\r': command not found
: No such file or directorysu//.bashrc
-bash: /cygdrive/c/Users/jhsu//.bash_profile: line 3: syntax error near unexpected token `fi'
-bash: /cygdrive/c/Users/jhsu//.bash_profile: line 3: `fi'
Run Code Online (Sandbox Code Playgroud)

我不确定我是从一个专门针对另一个系统的教程中获取命令,还是我错过了一个步骤.或者空格导致我的命令无法正常运行.

我已经查看了多个类似的问题,但我没有找到一个问题确切存在我的错误.


我的家乡之路:

$ echo $HOME
/cygdrive/c/Users/jhsu
$ echo ~
/cygdrive/c/Users/jhsu/
Run Code Online (Sandbox Code Playgroud)

所以我认为文件应该放在正确的位置.

bash shell cygwin newline

265
推荐指数
12
解决办法
27万
查看次数

在提交之前让git自动删除尾随空格

我正在使用我的团队的git,并希望从我的差异,日志,合并等中删除空格更改.我假设最简单的方法是让git自动删除尾随空格(以及其他空白错误)来自所有提交的应用程序.

我试图通过~/.gitconfig文件添加以下内容,但是当我提交时它没有做任何事情.也许它是为不同的东西而设计的.解决方案是什么?

[core]
    whitespace = trailing-space,space-before-tab
[apply]
    whitespace = fix
Run Code Online (Sandbox Code Playgroud)

我正在使用红宝石,以防任何人有任何红宝石特定的想法.在提交之前自动代码格式化将是下一步,但这是一个难题而不是真正导致大问题.

git whitespace githooks

213
推荐指数
11
解决办法
12万
查看次数

如何使用sed/grep在两个单词之间提取文本?

我试图输出一个字符串,其中包含字符串的两个单词之间的所有内容:

输入:

"Here is a String"
Run Code Online (Sandbox Code Playgroud)

输出:

"is a"
Run Code Online (Sandbox Code Playgroud)

使用:

sed -n '/Here/,/String/p'
Run Code Online (Sandbox Code Playgroud)

包括端点,但我不想包含它们.

string bash grep sed

110
推荐指数
10
解决办法
40万
查看次数

行尾的'^ M'字符

当我在Unix环境中运行特定的SQL脚本时,我在SQL脚本的每一行的末尾看到一个'^ M'字符,因为它回显到命令行.我不知道最初创建SQL脚本的操作系统.

造成这种情况的原因是什么?如何解决?

sql unix newline os-dependent line-endings

98
推荐指数
10
解决办法
11万
查看次数

有sed忽略不匹配的行

如何sed根据某个表达式创建过滤器匹配行,但忽略不匹配的行,而不是让它们打印?

作为一个真实的例子,我想scalac在一组文件上运行(Scala编译器),并从其-verbose输出中读取.class创建的文件.scalac -verbose输出一堆消息,但我们只对表单中的消息感兴趣[wrote some-class-name.class].我目前正在做的是这个(|&是bash 4.0将stderr传递给下一个程序的方法):

$ scalac -verbose some-file.scala ... |& sed 's/^\[wrote \(.*\.class\)\]$/\1/'
Run Code Online (Sandbox Code Playgroud)

这将从我们感兴趣的消息中提取文件名,但也会让所有其他消息保持不变!当然我们可以这样做:

$ scalac -verbose some-file.scala ... |& grep '^\[wrote .*\.class\]$' |
  sed 's/^\[wrote \(.*\.class\)\]$/\1/'
Run Code Online (Sandbox Code Playgroud)

哪个有效,但看起来非常像绕过真正的问题,这是如何指示sed从输入中忽略不匹配的行.那我们该怎么做呢?

sed

82
推荐指数
2
解决办法
4万
查看次数

将TOP命令的输出限制为特定的进程名称

如果调用top命令,则会获得所有正在运行的进程.但是,如何将输出仅限制为某个进程名称,如"java"

我试过这个 顶级-l 2 | grep java 但是这样你只获得快照,而不是持续更新的列表.并且顶部-l 0 | grep java并不是很清楚.

unix macos command-line top-command

79
推荐指数
6
解决办法
10万
查看次数

如何在Unix行尾转换Windows行尾(CR/LF到LF)

我是一名Java开发人员,我正在使用Ubuntu进行开发.该项目是在Windows中使用Eclipse创建的,它使用的是CP1252编码.

要转换为UTF-8,我使用了重新编码程序:

find Web -iname \*.java | xargs recode CP1252...UTF-8
Run Code Online (Sandbox Code Playgroud)

此命令会出现此错误:

recode: Web/src/br/cits/projeto/geral/presentation/GravacaoMessageHelper.java failed: Ambiguous output in step `CR-LF..data
Run Code Online (Sandbox Code Playgroud)

我已经关注它并在此处获得解决方案:http://fvue.nl/wiki/Bash_and_Windows#Recode:_Ambiguous_output_in_step_.60data..CR-LF.27 它说:

将行结尾从CR/LF转换为单个LF:使用vim编辑文件,给出命令:set ff = unix并保存文件.Recode现在应该运行没有错误.

很好,但我有很多文件要删除CR/LF字符,我无法打开每个人来做它.Vi不为bash操作提供命令行的任何选项.

sed可以用来做这个吗?怎么样 ?

谢谢=)

linux windows end-of-line

71
推荐指数
6
解决办法
11万
查看次数

使用tr用空格替换换行符

有输出sed:

http://sitename.com/galleries/83450
72-profile
Run Code Online (Sandbox Code Playgroud)

这两个字符串应合并为一个并用空格分隔,如:

http://sitename.com/galleries/83450 72-profile
Run Code Online (Sandbox Code Playgroud)

两个字符串是流水线的tr,以便用空格替换换行符:

tr '\n' ' '
Run Code Online (Sandbox Code Playgroud)

并且它不起作用,结果与输入相同.

使用ASCII代码指示空间会'\032'导致替换\n为不可打印的字符.

怎么了?我在Windows上使用Git Bash.

replace newline space tr git-bash

51
推荐指数
1
解决办法
14万
查看次数