【发布时间】:2014-10-09 08:54:13
【问题描述】:
如果文本文件有多个单词,我如何制作一个 bash 脚本来删除行?
【问题讨论】:
-
举个例子会更好。
-
“删除行”是什么意思?那么如果文件包含超过 1 个单词,删除什么?
如果文本文件有多个单词,我如何制作一个 bash 脚本来删除行?
【问题讨论】:
也许是这样的:
#!/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>&-
然后您将在输出文件中拥有不超过 word 的所有行,您可以删除输入文件而不是 mv 输出到输入。
【讨论】:
我用过这个,使用sed:我的txt文件是file.txt:
one
one two
one two tree for
one two
sed -i.bck '/\(.\+\)\(\s\+\)\(.*\)/d' file.txt
cat file.txt
one
【讨论】:
如果您的单词由“空格”字符分隔,您可以使用 sed 在一行中完成。让“./myfile.txt”作为你的文件名,那么:
#!/bin/bash
sed -i "/[^ ][ ]/d" ./myfile.txt
正则表达式替换前面有非空格字符的所有空格字符,当你有两个单词时就是这种情况。
【讨论】: