leetcode-195 Tenth Line - 2> /dev/null - 博客频道 - CSDN.NET
所以可以有下面几种方法:
方法一:
awk 'NR==10' file.txt //awk的默认动作就是打印$0,所以NR==10后面可以不用加{print $0}
方法二:
sed -n '10p' file.txt //如果不够10行,则什么也不打印
方法三:
line=$(cat file.txt | wc -l) //千万注意,等号前后一定不要有空格
if [ "$line" -ge 10 ] ; then //$line的双引号也可以不用加
cat file.txt | head -n 10 | tail -n 1
fi
http://blog.csdn.net/ayst123/article/details/45618577
Leetcode-192 Word Frequency
1.利用awk默认一行一条记录,默认以空格划分每条记录,NF为划分的总块数先打印出所有单词。
2.排序+统计+消除重复
3.输出
awk '{i=1;while(i<=NF){print $i;i++}}' words.txt \
| sort | uniq -c \
| sort -k1nr \
|awk '{print $2 " " $1}'
http://blog.csdn.net/sole_cc/article/details/44998763
cat words.txt | tr -s ' ' '\n' | sort | uniq -c | sort -nr | awk '{print $2 " " $1}'
解释:
tr -s: 使用指定字符串替换出现一次或者连续出现的目标字符串(把一个或多个连续空格用换行符代替)
sort: 将单词从小到大排序
uniq -c: uniq用来对连续出现的行去重,-c参数为计数
sort -rn: -r 倒序排列, -n 按照数值大小排序
awk '{ print $2, $1 }': 格式化输出,将每一行的内容用空格分隔成若干部分,$i为第i个部分。
方法二:
awk '
{for(i=1;i<=NF;i++)
{s[$i]++;}
}
END{
for(i in s)
{print i " " s[i]}
}' words.txt | sort -nr -k 2
https://github.com/illuz/leetcode/blob/master/solutions/192.Word_Frequency/AC_awk.sh
sort的k参数是以第几列来排序的意思
https://github.com/SaulLawliet/leetcode/blob/master/shell/192-word-frequency.sh
awk 'BEGIN{RS=" |\n"} $0!=""{a[$0]++} END{for(i in a) print i" "a[i]}' words.txt |sort -nrk 2
http://accepted.com.cn/leetcode192/
grep -oE '[a-z]+' words.txt | sort | uniq -c | sort -r | awk '{print $2" "$1}'
https://ruixublog.wordpress.com/2015/05/14/leetcode192-word-frequency/
Read full article from leetcode-195 Tenth Line - 2> /dev/null - 博客频道 - CSDN.NET
How would you print just the 10th line of a file?
For example, assume that
file.txt
has the following content:Line 1 Line 2 Line 3 Line 4 Line 5 Line 6 Line 7 Line 8 Line 9 Line 10Your script should output the tenth line, which is:
Line 10打印一个文件中的第10行,需要注意的是如果没有10行的话,则什么也不打印
所以可以有下面几种方法:
方法一:
awk 'NR==10' file.txt //awk的默认动作就是打印$0,所以NR==10后面可以不用加{print $0}
方法二:
sed -n '10p' file.txt //如果不够10行,则什么也不打印
方法三:
line=$(cat file.txt | wc -l) //千万注意,等号前后一定不要有空格
if [ "$line" -ge 10 ] ; then //$line的双引号也可以不用加
cat file.txt | head -n 10 | tail -n 1
fi
http://blog.csdn.net/ayst123/article/details/45618577
Solution 2(awk)
- 1
- 1
Solution 3
- 1
- 1
tail -n
-n, –lines=K Output the last K lines, instead of the default of the last 10; alternatively, use “-n +K” to output lines starting with the Kth.
Keep in mind that -n+K, output lines starting with Kth
http://www.cnblogs.com/grandyang/p/5376902.html
我们也可以使用tail和head关键字来打印,关于tail和head的用法详解请参见这个帖子。其中head表示从头开始打印,tail表示从结尾开始打印,-你表示根据文件行数进行打印,一些区别与联系请见下列例子:
tail -n 3 file.txt: 打印file文件的最后三行内容
tail -n +3 file.txt: 从file文件第三行开始打印所有内容
head -n 3 file.txt: 打印file文件的前三行
head -n -3 file.txt: 打印file文件除了最后三行的所有内容
至于竖杠|为管道命令,讲解参见这个帖子,用法: command 1 | command 2 他的功能是把第一个命令command1执行的结果作为command 2的输入传给command 2。了解了这些知识,那么下面一行命令就很好理解了,首先输入file文件从第十行开始的所有内容,然后将输出内容的第一行打印出来即为第十行:
解法四:
tail -n +10 file.txt | head -n 1
下面这种方法跟上面刚好相反,先输出file文件的前十行,然后从输出的第十行开始打印,那么也能正好打印第十行的内容:
解法五:
head -n 10 file.txt | tail -n +10
Leetcode-192 Word Frequency
Write a bash script to calculate the frequency of each word in a text file
words.txt
.
For simplicity sake, you may assume:
words.txt
contains only lowercase characters and space' '
characters.- Each word must consist of lowercase characters only.
- Words are separated by one or more whitespace characters.
For example, assume that
words.txt
has the following content:the day is sunny the the the sunny is isYour script should output the following, sorted by descending frequency:
the 4 is 3 sunny 2 day 1http://www.cnblogs.com/lookbackinside/p/4418203.html
awk '{for(i=1;i<=NF;i++) a[$i]+=1} END{for(i in a) print i,a[i] | "sort -r -n -k2"}' words.txt
http://blog.csdn.net/wangxiaobupt/article/details/452018171.利用awk默认一行一条记录,默认以空格划分每条记录,NF为划分的总块数先打印出所有单词。
2.排序+统计+消除重复
3.输出
awk '{i=1;while(i<=NF){print $i;i++}}' words.txt \
| sort | uniq -c \
| sort -k1nr \
|awk '{print $2 " " $1}'
http://blog.csdn.net/sole_cc/article/details/44998763
cat words.txt | tr -s ' ' '\n' | sort | uniq -c | sort -nr | awk '{print $2 " " $1}'
解释:
tr -s: 使用指定字符串替换出现一次或者连续出现的目标字符串(把一个或多个连续空格用换行符代替)
sort: 将单词从小到大排序
uniq -c: uniq用来对连续出现的行去重,-c参数为计数
sort -rn: -r 倒序排列, -n 按照数值大小排序
awk '{ print $2, $1 }': 格式化输出,将每一行的内容用空格分隔成若干部分,$i为第i个部分。
方法二:
awk '
{for(i=1;i<=NF;i++)
{s[$i]++;}
}
END{
for(i in s)
{print i " " s[i]}
}' words.txt | sort -nr -k 2
https://github.com/illuz/leetcode/blob/master/solutions/192.Word_Frequency/AC_awk.sh
awk ' | |
{ for (i=1; i<=NF; i++) { ++S[$i]; } } | |
END { for (i in S) { print i, S[i] } } | |
' words.txt | sort -nr -k 2 |
https://github.com/SaulLawliet/leetcode/blob/master/shell/192-word-frequency.sh
awk 'BEGIN{RS=" |\n"} $0!=""{a[$0]++} END{for(i in a) print i" "a[i]}' words.txt |sort -nrk 2
http://accepted.com.cn/leetcode192/
grep -oE '[a-z]+' words.txt | sort | uniq -c | sort -r | awk '{print $2" "$1}'
https://ruixublog.wordpress.com/2015/05/14/leetcode192-word-frequency/
Read full article from leetcode-195 Tenth Line - 2> /dev/null - 博客频道 - CSDN.NET