【发布时间】:2016-05-19 11:57:30
【问题描述】:
我想打印包含两个相同单词的所有句子。 句子以 结尾。或者 ?或!。
对于输入:
word ja ba word. Na Na word wdd? Nothing kkk
ok ok! word no this no word. ok ok. notok!
输出应该是:
Na Na word wdd?
Nothing kkk
ok ok!
ok ok.
这是我目前的代码:
#!/bin/bash
if [ $# -eq 0 ]
then
echo "No arguments"
fi
if [[ -f $1 ]] #if its file
then
cat $1 | awk '{
for (i=1;i<=NF;i++)
{
}}'
fi
我不知道如何用 AWK 分隔完整的句子。我不能使用多文件分隔符(!它很重要)。如果我将它们分开,如何检查里面的每个单词?我需要使用 AWK。
这是我的最新想法:
cat $1 | awk '{
for (i=1;i<=NF;i++)
{
a=0;
if ($i ~ "\?$" || $i ~ "\!$" || $i ~ "\.$")
{
#print $i;
k='';
for(j=$i; j!=$a; j--);
{
if( $j == $k)
#print whole sentence
$k=$j;
}
}
}}'
我找到了以?/./!结尾的单词,然后检查最后一句之前的所有单词
【问题讨论】:
-
为什么
Nothing kkk会出现在输出中?它不应该 -
中间有换行符(\n),句尾只有./?/!
-
当你说你必须使用AWK时,你的意思是你没有(或不能使用)
gawk吗?因为使用 gawk 您可以使用正则表达式作为记录分隔符gawk -v RS='[!?.]' ...。