我有一个输出:
我希望能够获得以下输出:
但是它无法识别“--”作为我要替换的第一个字符串。我该怎么解决?
--
out1
--
out2
--
out3
我希望能够获得以下输出:
out1
out2
out3
我想使用:
tr '--' ''
但是它无法识别“--”作为我要替换的第一个字符串。我该怎么解决?
cat file | sed '/^--/d'
grep -v "^--$" yourfile.txt
呢?使用awk的另一种方法
awk '!/^--$/' file
awk '$0!="--"' file
。 - ib.tr
最好的用法是删除连字符并留下空行。实现你想要的最好方法是使用 sed
,可以参考 Amro 的回答。需要记住的是,tr
处理的是字符列表而不是多字符字符串,因此在参数中放置两个连字符是没有意义的。
$ tr -d "-" < textfile
out1
out2
out3
然而,为了让tr
处理连字符和其他字符,您必须使用--
终止选项或将连字符放在最后一个字符之后。假设您想要摆脱连字符和字母o:
$ tr -d "-o" < textfile
tr: invalid option -- 'o'
Try ‘tr --help’ for more information.
$ tr -d -- "-o" < textfile
ut1
ut2
ut3
$ tr -d "o-" < textfile
ut1
ut2
ut3
--
选项终止符号是一个好主意,这样不良数据就不会不必要地产生错误。对于除了tr
之外的命令也是如此。tr -d -- "$charlist" < "$file"
tr
不接受文件名参数。你必须使用<textfile
。 - G-Man Says 'Reinstate Monica'你也可以用grep
做同样的事情:
cat filename |grep -v "\--"
cat
命令。 (不,我不是那个给你点踩的人)。 - gniourf_gniourf