我正在尝试从文件中的引号中删除换行符
我可以使用以下代码实现这一目标
awk -F"\"" '!length($NF){print;next}{printf("%s ", $0)}' filename.txt>filenamenew.txt
请注意,我正在创建一个新文件filenamenew.txt,这是可以避免的吗?我可以执行此命令,原因是文件很大。
我的文件用竖线分隔
sample input file
"id"|"name"
"1"|"john
doe"
"2"|"second
name
in the list"
使用上面的代码,我得到以下输出
"id"|"name"
"1"|"john doe"
"2"|"second name in the list"
但是我有一个很大的文件,我发现某些行在引号示例之间有^ M字符
second sample input file
"id"|"name"
"1"|"john
doe"
"^M2"|"second^M^M
name
in the list"
使用上述代码o / p
"id"|"name"
"1"|"john doe"
name in the list"
所以基本上,如果一行中有一个^ M表示该字符串没有被打印,但是我在线阅读了^ M等于\ r,所以我用了
tr -d'\r'< filename.txt
我也尝试过
awk-F"|"{sub(/^M/,"")}1
但它没有删除那些字符(^ M)
我为什么要这样做的一些背景 我正在从关系表中提取数据并将其加载到平面文件中,并检查表和文件之间的计数是否匹配,但由于count(*)列中的\ n与文件中的wc-l不匹配。
最终解决方案:
从长远来看,我不想删除这些不可打印的字符,但希望将其替换为某些字符或值(以便在表和文件匹配之间进行计数),然后在我将其加载回表时再次用原来存在的\ n或^ M替换我作为占位符有效添加的值,这样就不会篡改我的数据。
任何建议都值得赞赏。
谢谢。