如果文本文件包含多个单词,如何使用bash脚本删除行?
答案 0 :(得分:0)
也许是这样的:
#!/bin/bash
exec 3>output
while read -r line; do
nwords=`echo $line | wc -w`;
if [ ! "$nwords" -gt 1 ]; then
echo "$line" >&3;
fi
done < input
exec 3>&-
然后你将拥有输出文件中没有多个单词的所有行,你可以删除输入文件而不是mv输出到输入。
答案 1 :(得分:0)
我用过sed:我的txt文件是file.txt:
one
one two
one two tree for
one two
sed -i.bck '/\(.\+\)\(\s\+\)\(.*\)/d' file.txt
cat file.txt
one
答案 2 :(得分:0)
如果您的单词被&#34; 空格&#34;只需一行即可完成 sed 。让&#34; ./ myfile.txt &#34;是你的文件名,然后:
#!/bin/bash
sed -i "/[^ ][ ]/d" ./myfile.txt
正则表达式替换前面有非空格字符的所有空格字符,就像有两个单词的情况一样。