Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使bash从.txt文件中输出特定单词_Bash - Fatal编程技术网

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

使bash从.txt文件中输出特定单词,bash,Bash,我对Bash有一个问题: 正如标题所说,我需要bash输出某个单词,具体取决于它在文件中的位置。在我的显式示例中,我有一个简单的.txt文件 我已经发现,您可以使用以下命令计算文件中的字数: wc -w < myFile.txt 当然还有一种方法可以使“cat”只显示单词x。比如: cat myFile.txt | wordno. 3125 desired-word cat myFile.txt | characterno. 2342 desired-character 请注意,我将

我对Bash有一个问题:

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

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

wc -w < myFile.txt
当然还有一种方法可以使“cat”只显示单词x。比如:

cat myFile.txt | wordno. 3125
desired-word
cat myFile.txt | characterno. 2342
desired-character
请注意,我将欢迎任何能够完成此任务的命令,而不仅仅是cat

或者,或者另外,我很高兴知道如何根据角色在文件中的位置在文件中显示某些角色。比如:

cat myFile.txt | wordno. 3125
desired-word
cat myFile.txt | characterno. 2342
desired-character
我已经知道如何通过变量实现这一点:

a="hello, how are you"
echo ${a:9:1}
w
唯一的问题是变量只能这么长。如果它是一个完整的.txt文件,它就不会工作


我期待你的回答

您可以使用
awk
进行此作业,它在空格处拆分字符串并打印
$wordnumber
stringpart,并且
tr
用于删除换行符

cat myFile.txt | tr -d '\n' | awk -v wordnumber=5 '{ print $wordnumber }'
如果你想要第五个例子。你可以这样做

head -c 5 myFile.txt | tail -c 1

您可以使用
awk
进行此作业,它在空格处拆分字符串并打印
$wordnumber
stringpart,并且
tr
用于删除换行符

cat myFile.txt | tr -d '\n' | awk -v wordnumber=5 '{ print $wordnumber }'
如果你想要第五个例子。你可以这样做

head -c 5 myFile.txt | tail -c 1
目瞪口呆:

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

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

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

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

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

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

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

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

由于您没有显示输入文件或预期输出的示例,因此无法对其进行测试。您可以简单地使用
awk
来实现这一点,下面就是一个例子

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

在这里,我们告诉
awk
查找第1行
FNR==1
,在
substr
中,我们告诉
awk
获取字符
2342
,下一个
1
意味着从该位置仅获取1个字符,您可以根据需要增加其值或保留它。

因为您没有显示示例输入\ U文件或预期输出的错误,因此无法对其进行测试。您可以简单地使用
awk
来实现这一点,下面就是一个例子

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

在这里,我们告诉
awk
查找第1行
FNR==1
,在
substr
中,我们告诉
awk
获取字符
2342
,下一个
1
意味着从该位置仅获取1个字符,您可以根据需要增加其值或保留它。

对不起,这一点并不清楚,请添加更多信息,然后让我们知道?抱歉,这一点不清楚,请添加更多信息,然后让我们知道?@wiomoc,您无需为此使用这么多命令,
awk
可以轻松处理
awk
可以读取文件本身。注意:您可以使用
tr-d'\n'
。所有shell都支持输入重定向。除此之外,除非这些行被包装在您想要的输入文件中
tr'\n'
而不是
-d
@wiomoc,否则您不需要为此使用这么多命令,
awk
可以轻松地处理它
awk
可以读取文件本身。注意:您可以使用
tr-d'\n'
。所有shell都支持输入重定向。除此之外,除非行被包装在输入文件中,否则您需要
tr'\n'
而不是
-d