(我将使用_而不是BLANK和\ n而不是换行来更好地描述情况:)
如果我执行
str_text=`vilistextum -u -p - - <<< "$str_html"`;
printf "$str_text"
outpot就像:
THISISAWord \n_ \n___ \n_ ANOTHERWORD \n_ ... \n__ ANOTHERWORD \n \n \n__ \n_
如何从变量中的字符串中只用一个\n
替换连续的\n
\n \n
和\n
?我想将连续的NEWLINES压缩为一个。
我希望得到的是:
THISISAWord
\n
ANOTHERWORD
\n
ANOTHERWORD
我试过像
这样的东西str_text=`vilistextum -u -p - - <<< "$str_html" | sed 's/\n//g'`;
但是sed并没有像我想象的那样工作。
如果您想要将HTML 3.2更高的内容转换为Text 不保存文件(女巫杀死性能),然后使用以下
str_text=$(vilistextum - - <<< "$str_html");
str_text=$(awk 'NF{print $0}' ORS='\n' <<< "$str_text");
str_text=$(sed 's/\\n//g' <<< "$str_text" );
非常感谢。
答案 0 :(得分:1)
使用awk
,您可以尝试以下内容:
awk 'NF{print $0}' ORS='\n\n' <<< "$str_text"
$ cat -vet <<< "$str_text"
$
THISISAWORD$
$
$
$
$
ANOTHERWORD$
$
$
$
ANOTHERWORD$
$
$
$
$
$ awk 'NF{print $0}' ORS='\n\n' <<< "$str_text"
THISISAWORD
ANOTHERWORD
ANOTHERWORD
所以你可以这样做:
$ str_text=$(awk 'NF{print $0}' ORS='\n\n' <<< "$str_text")
$ echo "$str_text"
THISISAWORD
ANOTHERWORD
ANOTHERWORD
答案 1 :(得分:1)
这应该做你想要的事情
cmd | sed -n 's/.*[^[:space:]].*/&\n/p'
-n
开关会关闭默认的print-each-line行为。s/../../p
表示打印那些发生替换的行。&
包含与s///
如果一行包含至少一个非空白字符,请在该行的末尾添加换行符。否则(仅包含空行字符的行,如换行符和空格符号), 忽略它们。
sed 's/\n//g'
不起作用,因为sed
使用换行符作为记录分隔符。因此,它不会将文件视为line1\nline2\nline3
等,而是将其视为line1
,line2
,line3
等。
答案 2 :(得分:0)
提出问题:
如何删除仅包含空白字符的行?
答案是
grep -E \\w
如果您还想删除非空行中的尾随空格:
grep -E \\w | sed -r 's/ +$//g'
答案 3 :(得分:0)
答案 4 :(得分:0)
Kaizen ~/so_test $ cat ztempfile3.txt | nl | grep -v '\n' | tr '[0-9]' '\n'
THISISAWord
ANOTHERWORD
ANOTHERWORD
只是在努力.....这有帮助吗?