Unix Shell-删除特殊换行符

Unix Shell-删除特殊换行符,shell,unix,sed,Shell,Unix,Sed,我们正在接收一个文件,该文件被分隔为带\(换行符)的行和带\(制表符)的列 当文件的一个“字段”中出现手动换行符时,它将作为带有两个反斜杠(\\newline)的特殊换行符出现 要删除特殊选项卡\(tab),我们使用此sed命令,该命令正常工作: sed "s/$(printf '\\\\\t')/ /g" 但是,换行符的相应命令不会: sed "s/$(printf '\\\\\n')/ /g" 它不删除\n,只删除其前面的反斜杠。删除\(换行符)是否需要进行特殊处理 说明:普通换行符的

我们正在接收一个文件,该文件被分隔为带\(换行符)的行和带\(制表符)的列

当文件的一个“字段”中出现手动换行符时,它将作为带有两个反斜杠(\\newline)的特殊换行符出现

要删除特殊选项卡\(tab),我们使用此sed命令,该命令正常工作:

sed "s/$(printf '\\\\\t')/ /g"
但是,换行符的相应命令不会:

sed "s/$(printf '\\\\\n')/ /g" 
它不删除\n,只删除其前面的反斜杠。删除\(换行符)是否需要进行特殊处理

说明:普通换行符的格式如下:

\(newline)
echo 'hello\\nthere' | sed -e 's/\\\\n/ /g'
需要删除的特殊字符是什么

\\(newline)
给你:

echo -e 'hello\\\nthere' | perl -ne 's/\\\n/ /; print'
sed
中很难(但可能)做到这一点,因为
sed
逐行处理输入,并且您的数据被分成多行。这个
perl
one liner逐行处理输入,因为它将换行符作为行的一部分,所以它可以执行空格替换,我认为这具有您想要的效果

或者,如果您更喜欢
awk

echo -e 'hello\\\nthere' | awk '{ if (gsub(/\\$/, " ")) printf; else print }'
起初,我怀疑您的“特殊换行符”字符就是这个命令输出中的字符串
\\n

echo 'hello\\nthere'
您可以用如下空格替换字符串
\\n

\(newline)
echo 'hello\\nthere' | sed -e 's/\\\\n/ /g'
给你:

echo -e 'hello\\\nthere' | perl -ne 's/\\\n/ /; print'
sed
中很难(但可能)做到这一点,因为
sed
逐行处理输入,并且您的数据被分成多行。这个
perl
one liner逐行处理输入,因为它将换行符作为行的一部分,所以它可以执行空格替换,我认为这具有您想要的效果

或者,如果您更喜欢
awk

echo -e 'hello\\\nthere' | awk '{ if (gsub(/\\$/, " ")) printf; else print }'
起初,我怀疑您的“特殊换行符”字符就是这个命令输出中的字符串
\\n

echo 'hello\\nthere'
您可以用如下空格替换字符串
\\n

\(newline)
echo 'hello\\nthere' | sed -e 's/\\\\n/ /g'
您也可以使用
tr(translate)
命令来执行此操作,如

tr '\n' ' ' < inputfile.txt
tr'\n'
编辑:在这种情况下,请像

tr '\\\n' ' ' < inputfile.txt
tr'\\\n'
您也可以使用
tr(translate)
命令执行此操作,如

tr '\n' ' ' < inputfile.txt
tr'\n'
编辑:在这种情况下,请像

tr '\\\n' ' ' < inputfile.txt
tr'\\\n'
文件的行中是否有字符串“\\n”,或者在反斜杠后确实有一个换行符(将单行数据分成两行)。我相信它实际上是“\\”(换行符)'它显示为两行:第一行以\结尾,然后是下一行。您的符号不太清楚-实际换行前有多少反斜杠?请发布
echo-e
命令,该命令将生成您想要删除的内容的测试输出。是
echo-e'\\\n'
还是
echo-e'\\n'
,还是
echo-e'\\\n'
?文件的行中是否有字符串“\\n”,还是在反斜杠后确实有一个换行字符(将单行数据分成两行)。我相信它实际上是“\\”(换行字符)'它显示为两行:第一行以\结尾,然后是下一行。您的符号不太清楚-实际换行前有多少反斜杠?请发布
echo-e
命令,该命令将生成您想要删除的内容的测试输出。是
echo-e'\\\n'
还是
echo-e'\\n'
,还是
echo-e'\\\n'
?是的,但我只想删除前面有两个反斜杠的换行字符是的,但我只想删除前面有两个反斜杠的换行字符谢谢,它可以工作!我使用的最后一个代码是:perl-pi-e's/\\\n/\\\g/datafile.tsvt谢谢,它能工作!我使用的最后一个代码是:perl-pi-e's/\\\n/\\\g/datafile.tsv