У меня есть столбец с несколькими словами:
scatman
batman
superman
scatman
scatman
batman
superman
scatman
scatman
batman
superman
scatman
batman
WWWWWWWW
superman
scatman
batman
superman
scatman
Я должен сделать несколько шаблонов, где мне нужно дословно три слова: scatman, batman, superman. Если у меня есть повторяющиеся слова, такие как scatman и scatman в строках 4 и 5 или где у меня есть другие слова, я должен их вырезать Я написал:
grep "scatman\|batman\|superman" file
Хорошо, я отклонил слово WWWWWWWW, но я не понимаю, как показать мою колонку слово за словом. У меня есть результат:
scatman
batman
superman
scatman
scatman
batman
superman
scatman
scatman
batman
superman
scatman
batman
superman
scatman
batman
superman
scatman
В строках 4 и 5 у меня есть повторяющиеся слова, но мне это не нравится. Где у меня ошибка?
Это будет работать именно так, как вы хотите
#!/bin/bash
array=(
[0]="scatman"
[1]="batman"
[2]="superman"
)
count=0
while read line; do
for i in "${array[@]}";
do
if [[ $count == 3 ]]; then
count=0
fi
if [[ $line == ${array[$count]} ]]; then
#echo "$line"
printf "%s " $line
# uncomment if you want every word on a new line
#echo "$line" >> newfile.txt # each word on a line
#or
# uncomment if you want all will be on one line
#printf "%s " $line >> newfile.txt
count=$((count+1))
else
continue
fi
done
done < file.txt #this is your original file
Распечатает каждое слово на новом строка вроде этой:
scatman
batman
superman
scatman
batman
superman
scatman
batman
superman
scatman
batman
superman
scatman
batman
superman
scatman
или в одной строке вроде этой:
scatman batman superman scatman batman superman scatman batman superman scatman batman superman scatman batman superman scatman
ഇത് grep
, awk
:
cat words.txt |
grep -E 'scatman|batman|superman' |
awk '{
last_word = cur_word
cur_word = $0
if (cur_word == last_word)
next
else
print $0
}' < word.list
grep -E
ഒരു വിപുലീകൃത റെഗുലർ എക്സ്പ്രഷൻ അനുവദിക്കുന്നു, അത് തിരയൽ ടാർഗെറ്റുകൾക്കായി അല്ലെങ്കിൽ
ആയി |
ഉപയോഗിക്കാൻ അനുവദിക്കുന്നു. awk
കോഡ് ആവർത്തിച്ചുള്ള പദങ്ങൾക്കായി തിരയുകയും അവ ഒഴിവാക്കുകയും ചെയ്യുന്നു.
നിങ്ങൾക്ക് വേണമെങ്കിൽ ഇതെല്ലാം ഒരു വരിയിൽ ചെയ്യാൻ കഴിയും:
cat words.txt | grep -E 'scatman|batman|superman' | awk '{ last_word = cur_word; cur_word = $0; if (cur_word == last_word) next; else print $0 }' < word.list`