我正在尝试用,
新行替换当前文件中的每个:
:%s/,/\n/g
Run Code Online (Sandbox Code Playgroud)
但它插入的内容看起来像是一个^@
而不是实际的换行符.该文件不是DOS模式或任何东西.
我该怎么办?
如果你像我一样好奇,请检查问题为什么\ raim的换行?同样.
我试图使用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)
应该是什么代码?
我有窗口,使用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)
所以我认为文件应该放在正确的位置.
我正在使用我的团队的git,并希望从我的差异,日志,合并等中删除空格更改.我假设最简单的方法是让git自动删除尾随空格(以及其他空白错误)来自所有提交的应用程序.
我试图通过~/.gitconfig
文件添加以下内容,但是当我提交时它没有做任何事情.也许它是为不同的东西而设计的.解决方案是什么?
[core]
whitespace = trailing-space,space-before-tab
[apply]
whitespace = fix
Run Code Online (Sandbox Code Playgroud)
我正在使用红宝石,以防任何人有任何红宝石特定的想法.在提交之前自动代码格式化将是下一步,但这是一个难题而不是真正导致大问题.
我试图输出一个字符串,其中包含字符串的两个单词之间的所有内容:
输入:
"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)
包括端点,但我不想包含它们.
当我在Unix环境中运行特定的SQL脚本时,我在SQL脚本的每一行的末尾看到一个'^ M'字符,因为它回显到命令行.我不知道最初创建SQL脚本的操作系统.
造成这种情况的原因是什么?如何解决?
如何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
从输入中忽略不匹配的行.那我们该怎么做呢?
如果调用top命令,则会获得所有正在运行的进程.但是,如何将输出仅限制为某个进程名称,如"java"?
我试过这个 顶级-l 2 | grep java 但是这样你只获得快照,而不是持续更新的列表.并且顶部-l 0 | grep java并不是很清楚.
我是一名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可以用来做这个吗?怎么样 ?
谢谢=)
有输出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.
newline ×4
sed ×3
unix ×3
bash ×2
linux ×2
replace ×2
command-line ×1
cygwin ×1
end-of-line ×1
escaping ×1
git ×1
git-bash ×1
githooks ×1
grep ×1
line-endings ×1
macos ×1
os-dependent ×1
shell ×1
space ×1
sql ×1
string ×1
top-command ×1
tr ×1
vi ×1
vim ×1
whitespace ×1
windows ×1