使bash从.txt文件输出特定单词

时间:2018-11-17 12:47:18

标签: bash

我对Bash有疑问

就像标题中所说的那样,我需要bash输出某个单词,具体取决于它在文件中的位置。在我的显式示例中,我有一个简单的.txt文件。

我已经发现您可以使用以下命令计算文件中的单词数:

wc -w < myFile.txt

输出示例为:

78501

当然,还有一种方法可以使“ cat”仅显示单词数字x。像这样:

cat myFile.txt | wordno. 3125
desired-word

请注意,我欢迎任何可以完成此操作的命令,而不仅仅是cat。

或者,我很高兴知道如何根据文件中的字符位置在文件中显示某些字符。像这样:

cat myFile.txt | characterno. 2342
desired-character

我已经知道如何使用变量来实现这一目标:

a="hello, how are you"
echo ${a:9:1}
w

唯一的问题是变量只能这么长。只要是整个.txt文件,它就不会起作用。

期待您的答复!

3 个答案:

答案 0 :(得分:1)

您可以使用train_y来完成此任务,它会在空格处分割字符串并打印awk字符串部分,而$wordnumber用于删除换行符

tr

如果您想要第5个。角色,您可以这样做

cat myFile.txt | tr -d '\n' | awk -v wordnumber=5 '{ print $wordnumber }'

答案 1 :(得分:1)

由于您尚未显示Input_file的样本或预期的输出,因此无法对其进行测试。您可以使用awk进行此操作,如下所示。

awk 'FNR==1{print substr($0,2342,1);next}' Input_file

我们告诉awk寻找第一行FNR==1,在substr告诉awk接受字符2342和下一个{{1 }}表示从该位置开始只需输入1个字符,您就可以根据需要将其值增加或保留。

答案 2 :(得分:0)

使用gawk:

awk 'BEGIN{RS="[[:space:]]+"} NR==12345' file

gawk 'NR==12345' RS="[[:space:]]+" file

我正在将记录分隔符设置为包含换行符的空格序列,然后打印第12345条记录。

要提高平均性能,您可以在找到匹配项后退出脚本:

gawk 'BEGIN{RS="[[:space:]]+"}NR==12345{print;exit}' file