Bash 删除文件的当前行
我面临着一些看似简单但却找不到答案的问题: 此函数的目标是删除包含3个逗号“,”的所有行:Bash 删除文件的当前行,bash,sed,grep,Bash,Sed,Grep,我面临着一些看似简单但却找不到答案的问题: 此函数的目标是删除包含3个逗号“,”的所有行: while read line; do COUNT=$(echo $line | grep -o "\," | wc -) if [ $COUNT -ne 3 ]; then
while read line; do
COUNT=$(echo $line | grep -o "\," | wc -)
if [ $COUNT -ne 3 ]; then
remove line
fi
done < tmp.txt
提前谢谢我会用另一种方式来做:
while read line; do
COUNT=$(echo $line | grep -o "\," | wc -)
if [ $COUNT -eq 3 ]; then
echo $line >> $tempofile
fi
done < tmp.txt
读行时;做
计数=$(echo$行| grep-o“\,“| wc-)
如果[$COUNT-等式3];然后
echo$line>>$tempofile
fi
完成
如果行匹配,请保留它,否则转到下一行。我会用另一种方式来做:
while read line; do
COUNT=$(echo $line | grep -o "\," | wc -)
if [ $COUNT -eq 3 ]; then
echo $line >> $tempofile
fi
done < tmp.txt
读行时;做
计数=$(echo$行| grep-o“\,“| wc-)
如果[$COUNT-等式3];然后
echo$line>>$tempofile
fi
完成
如果该行匹配,则保留该行,否则转到下一行。使用
sed
命令专用解决方案
sed '/^\([^,]*,\)\{3\}[^,]*$/d' infile
- 删除所有逗号
正好出现3次的行,
awk
:
awk -F, 'NF!=4' infile
或者两者都从变量中读取
sed '/^\([^,]*,\)\{3\}[^,]*$/d' <<<"$variable"
awk -F, 'NF!=4' <<<"$variable"
sed'/^\([^,]*,\)\{3\}[^,]*$/d'使用sed
命令专用解决方案
sed '/^\([^,]*,\)\{3\}[^,]*$/d' infile
- 删除所有逗号
,
正好出现3次的行
或使用awk
:
awk -F, 'NF!=4' infile
或者两者都从变量中读取
sed '/^\([^,]*,\)\{3\}[^,]*$/d' <<<"$variable"
awk -F, 'NF!=4' <<<"$variable"
sed'/^\([^,]*,\)\{3\}[^,]*$/d'这个简单的命令可以删除包含3行的所有行
$awk'/3/'file\u name
这个简单的命令可以删除包含3的所有行
$awk'/3/'文件名
一个简单的awk解决方案
awk 'gsub(/,/,",")!=3' file
gsub
用指定的字符串替换模式,并返回替换/替换的次数
我们正在将,
替换为,
,因此gsub
将返回字符串中,
的编号
示例:
输入文件
hello this line has 1 ,
This line, has, 3 ,
This line, has, 4 , commas , Thanks
输出
$ awk 'gsub(/,/,",")!=3' file
hello this line has 1 ,
This line, has, 4 , commas , Thanks
一个简单的awk解决方案
awk 'gsub(/,/,",")!=3' file
gsub
用指定的字符串替换模式,并返回替换/替换的次数
我们正在将,
替换为,
,因此gsub
将返回字符串中,
的编号
示例:
输入文件
hello this line has 1 ,
This line, has, 3 ,
This line, has, 4 , commas , Thanks
输出
$ awk 'gsub(/,/,",")!=3' file
hello this line has 1 ,
This line, has, 4 , commas , Thanks
不是3
本身,字符逗号,
和它在一行中出现3次。不是3
本身,字符逗号,
和它在一行中出现3次。