您的位置:首页 > 运维架构 > Shell

LeetCode Shell

2017-02-14 10:53 387 查看

192. Word Frequency

cat words.txt | tr -s ' ' '\n' | sort | uniq -c | sort -rn | awk '{print $2" "$1}'
tr -s: 使用指定字符串替换出现一次或者连续出现的目标字符串(把一个或多个连续空格用换行符代替);

sort: 将单词从小到大排序;

uniq -c: uniq用来对连续出现的行去重,-c参数为计数;

sort -rn: -r 倒序排列, -n 按照数值大小排序;

awk '{ print $2, $1 }': 格式化输出,将每一行的内容用空格分隔成若干部分,$i为第i个部分。

193. Valid Phone Numbers

cat file.txt | grep -Eo '^(\([0-9]{3}\) ){1}[0-9]{3}-[0-9]{4}$|^([0-9]{3}-){2}[0-9]{4}$'
^(\([0-9]{3}\) ){1}[0-9]{3}-[0-9]{4}$ 匹配形如(123) 456-7890的电话号码

^([0-9]{3}-){2}[0-9]{4}$ 匹配形如987-123-4567的电话号码

194. Transpose File

awk '{
for (i = 1; i <= NF; ++i){
if (NR == 1) s[i] = $i;
else s[i] = s[i] " " $i;
}
} END{
for (i = 1; s[i] != ""; ++i){
print s[i];
}
}' file.txt
和C语言类似

NF:每一行拥有的字段总数,即:列

NR:目前awk所处理的是“第几行”数据,即:行

195. Tenth Line

awk:

awk 'NR == 10' file.txtsed:
sed -n "10p" file.txt
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: