再回到另一个问题。
我现在拥有的文件格式如下:
1234,
1234,
1-23-4
我想用这个文件做两件事。
首先,删除第三行中的-
个字符。因此,1-23-4
==> 1234
。
其次,我想把它全部打印成一行。
最终结果如下:
1234,1234,1234
这是否可以在脚本中使用行命令?请建议。
提前感谢您的时间和帮助。
答案 0 :(得分:4)
使用tr
:
$ tr -d '\n-' < a | sed 's/$/\n/'
1234,1234,1234
删除连字符:
$ tr -d '-' < file
1234,
1234,
1234
同样适用于\n
的新行。
当我们删除所有新行时,它将错过完成的行。要恢复它,我们使用sed
。
$prompt tr -d '\n-' < a
1234,1234,1234$prompt
$ tr -d '\n-' < a | sed 's/$/\n/'
1234,1234,1234
谢谢fedorqui。我试过这个。我用文件名替换了文件但是它 没有为我创建一个具有最终格式的新文件。抱歉,我想 我应该在问题中提到这一点。我的坏。
没问题。你只需要重定向它:
$ tr -d '\n-' < a | sed 's/$/\n/' > new_file
$ cat new_file
1234,1234,1234
答案 1 :(得分:1)
tr
是个好人。
另一方面是perl:
perl -pne 's/[-\n]//g' your_file
-n
- &GT;这将作为文件中每一行的while循环。
-e
- &GT;在此之后的事情只不过是每一行都会表现出来的表达。
-p
- &GT;在每行执行表达式后打印每一行。
S /搜索/替换/克
s/
搜索换行符或“ - ”/替换为空字符/ g - 表示该行中的所有出现。
答案 2 :(得分:1)
(gnu)awk:
awk -v RS="\0" 'gsub(/[\n-]/,"")' file
测试
kent$ echo "1234,
1234,
1-23-4"|awk -v RS="\0" 'gsub(/[\n-]/,"")'
1234,1234,1234