我对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文件,它就不会起作用。
期待您的答复!
答案 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