如何从文本文件中删除换行符?
- 2024-10-31 08:38:00
- admin 原创
- 73
问题描述:
我有以下数据,我需要将其全部放在一行中。
我有这个:
22791
;
14336
;
22821
;
34653
;
21491
;
25522
;
33238
;
我需要这个:
22791;14336;22821;34653;21491;25522;33238;
编辑
这些命令都不能完美地运行。
他们中的大多数让数据看起来像这样:
22791
;14336
;22821
;34653
;21491
;25522
解决方案 1:
tr --delete '
' < yourfile.txt
tr -d '
' < yourfile.txt
如果这里发布的所有命令都不起作用,那么您除了用换行符分隔字段之外,还有别的东西。可能文件中有 DOS/Windows 行尾(尽管我希望 Perl 解决方案即使在那种情况下也能工作)?
尝试:
tr -d "
" < yourfile.txt
如果这不起作用,那么您将必须更仔细地检查您的文件(例如,在十六进制编辑器中)以找出您想要删除的文件中可能有哪些字符。
解决方案 2:
tr -d '
' < file.txt
或者
awk '{ printf "%s", $0 }' file.txt
或者
sed ':a;N;$!ba;s/
//g' file.txt
此页有许多其他删除换行符的方法。
解决方案 3:
perl -p -i -e 's/R//g;' filename
一定要做好这项工作。
解决方案 4:
扩展上一个答案,这将删除所有新行并将结果保存到新文件(感谢@tripleee):
tr -d '
' < yourfile.txt > yourfile2.txt
哪一个比“没用的猫”更好(见评论):
cat file.txt | tr -d '
' > file2.txt
对于删除文件末尾的新行也很有用,例如,使用创建的新行echo blah > file.txt
。
请注意,目标文件名不同,这很重要,否则您将抹去原始内容!
解决方案 5:
paste -sd "" file.txt
解决方案 6:
您可以在 vim 中编辑该文件:
$ vim inputfile
:%s/
//g
解决方案 7:
使用
head -n 1 filename | od -c
来弄清楚哪个角色有罪。
然后使用
tr -d '
' <filename
对于 LF,以及
tr -d '
' <filename
对于 CRLF。
解决方案 8:
将 sed 与POSIX 类一起使用
这将删除所有仅包含空格(空格和制表符)的行
sed '/^[[:space:]]*$/d'
只需获取您正在处理的任何内容并将其传输到该
例子
cat filename | sed '/^[[:space:]]*$/d'
解决方案 9:
我今天也遇到了同样的情况。在Vim或Neovim中这非常简单,你可以用它gJ
来连接行。对于你的用例,只需执行
99gJ
99
这将连接所有 99 条线路。您可以根据需要连接多少条线路来调整数字。如果只连接一条线路,那么仅gJ
此而已。
解决方案 10:
使用 man 1 ed:
# cf. http://wiki.bash-hackers.org/doku.php?id=howto:edit-ed
ed -s file <<< $'1,$j
,p' # print to stdout
ed -s file <<< $'1,$j
wq' # in-place edit
解决方案 11:
书呆子事实:改用 ASCII。
tr -d '
' < filename.extension
(编辑是因为我没有看到有相同解决方案的答案,唯一的区别是我的有 ASCII)
解决方案 12:
使用 gedit 文本编辑器(3.18.3)
点击“搜索”
单击“查找并替换...”
输入`
s`“查找”字段保留替换为空白(无)
勾选正则表达式框
单击查找按钮
注意:这并没有完全解决 OP 最初的 7 年问题,但应该可以帮助一些从 SE 找到这里的 Linux 新手用户(比如我),他们有类似的“如何将我的文本全部放在一行上”的问题。
解决方案 13:
xargs
也使用换行符(但会添加最后的换行符):
xargs < file.txt | tr -d ' '
解决方案 14:
如果数据在file.txt中,那么:
echo $(<file.txt) | tr -d ' '
' $(<file.txt)
' 读取文件并将内容作为一系列单词给出,然后 'echo' 会以空格形式回显这些单词。然后 'tr' 命令会删除所有空格:
22791;14336;22821;34653;21491;25522;33238;
解决方案 15:
我通常会在从文件中复制代码片段并想将其粘贴到控制台而不添加不必要的新行时遇到这种用例,我最终做了一个 Bash 别名(oneline
如果你好奇的话我会这样称呼它)
xsel -b -o | tr -d '
' | tr -s ' ' | xsel -b -i
xsel -b -o
读取我的剪贴板`tr -d '
'`删除新行tr -s ' '
删除重复的空格xsel -b -i
将其推回到我的剪贴板
之后,我会将剪贴板的新内容粘贴到控制台或其他地方的一行中。
解决方案 16:
假设您只想保留数字和分号,下面的方法应该可以解决问题(假设没有重大的编码问题),但它也会删除最后的“换行符”:
tr -cd ";0-9"
您可以轻松修改上述内容以包含其他字符,例如,如果您想保留小数点、逗号等。
解决方案 17:
perl -0777 -pe 's/
+//g' 输入 >输出
perl -0777 -pe'tr/
//d'输入>输出
解决方案 18:
我会用 awk 来做,例如
awk '/[0-9]+/ { a = a $0 ";" } END { print a }' file.txt
(缺点是 a 被“累积”在内存中)。
编辑
忘记了 printf!还有
awk '/[0-9]+/ { printf "%s;", $0 }' file.txt
或者可能更好,使用 awk 在其他答案中已经给出了它。
解决方案 19:
您错过了最明显、最快速的答案,尤其是当您需要在 GUI 中执行此操作以修复一些奇怪的自动换行时。
打开
gedit
然后
Ctrl
+H
,然后放入Find
文本框`并在
Replace with空白处 填写复选框
Regular expression`,瞧。
解决方案 20:
还要删除文件末尾的换行符
python -c "s=open('filename','r').read();open('filename', 'w').write(s.replace('
',''))"
解决方案 21:
我发现最快的方法:
在命令行中执行此操作打开Vim
vim inputfile
按“:”并输入以下命令删除所有换行符
`:%s/
//g`输入此项还可以删除空格,以防某些字符是空格
:%s/ //g
确保通过使用以下方式写入文件来保存
:w
可以使用相同的格式删除任何其他字符,您可以使用类似的网站
https://apps.timwhitlock.info/unicode/inspect
找出你缺少的字符。
您还可以使用它来找出您看不到的其他字符,他们也有一个工具。
了解其他隐形字符的工具
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件