我需要检查一个文件是否有超过1行.我试过这个:
if [ `wc -l file.txt` -ge "2" ]
then
echo "This has more than 1 line."
fi
if [ `wc -l file.txt` >= 2 ]
then
echo "This has more than 1 line."
fi
Run Code Online (Sandbox Code Playgroud)
这些只是报告错误.如何在BASH条件中检查文件是否包含多行?
我有两个文件,wordlist.txt和text.txt.
第一个文件wordlist.txt包含中文,日文和韩文的大量单词列表,例如:
?
??
?
Run Code Online (Sandbox Code Playgroud)
第二个文件text.txt包含长段落,例如:
???????
??OK????
Run Code Online (Sandbox Code Playgroud)
我想创建一个新的单词列表(wordsfount.txt),但它应该只包含wordlist.txt至少在其中找到一行的那些行text.txt.上面的输出文件应该显示如下:
?
??
Run Code Online (Sandbox Code Playgroud)
在此列表中找不到"我",因为它从未找到过text.txt.
我想找到一种非常快速的方法来创建此列表,该列表仅包含第二个文件中的第一个文件中的行.
我在BASH中知道一种简单的方法来检查每一行worlist.txt并查看它是否在text.txt使用中grep:
a=1
while read line
do
c=`grep -c $line text.txt`
if [ "$c" -ge 1 ]
then
echo $line >> wordsfound.txt
echo "Found" $a
fi
echo "Not found" $a
a=`expr $a + 1`
done < wordlist.txt
Run Code Online (Sandbox Code Playgroud)
不幸的是,这wordlist.txt是一个很长的清单,这个过程需要很长时间.必须有一个更快的解决方案.这是一个考虑因素:
由于文件包含CJK字母,因此可以将它们视为一个包含大约8,000个字母的巨型字母.所以几乎每个单词都共享字符.例如:
?
??
Run Code Online (Sandbox Code Playgroud)
由于这个事实,如果从未找到"我" text.txt,那么"我们"也不会出现.更快的脚本可能首先检查"我",并且在发现它不存在时,将避免检查包含在 …
如何仅打印在文件中出现一次的那些行?例如,给定此文件:
mountain
forest
mountain
eagle
Run Code Online (Sandbox Code Playgroud)
输出将是这个,因为该行mountain出现两次:
forest
eagle
Run Code Online (Sandbox Code Playgroud)
是否有任何脚本,库,或使用程序Python或BASH工具(例如awk,perl,sed),它可以正确地转换编号的拼音(如dian4 nao3)为UTF-8带声调的拼音(如厂甸nǎo)?
我找到了以下示例,但它们需要PHP或#C:
我也发现了各种在线工具,但它们无法处理大量的转换.
在Lua中对条件进行检查是否为空的正确方法是什么?if x == ""并且f x ~= ""似乎没有工作.
我想从Lua中的字符串中删除所有空格.这是我尝试过的:
string.gsub(str, "", "")
string.gsub(str, "% ", "")
string.gsub(str, "%s*", "")
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.如何删除所有空格?
如何在UTF-8文档中的每个字符或符号之间添加空格?我123hello!变成了1 2 3 h e l l o !.
BASH,OpenOffice.org和gedit,如果其中任何一个可以做到这一点.我有一个纯文本文档,我想在LaTeX中编译.但是,有时它有字符"#","$","%","&"和"_".要在LaTeX中正确编译,我必须先用"#","\ $","\%","\&"和"_"替换这些字符.我用过这一行sed:
sed -i 's/\#/\\\#/g' ./file.txt
sed -i 's/\$/\\\$/g' ./file.txt
sed -i 's/\%/\\\%/g' ./file.txt
sed -i 's/\&/\\\&/g' ./file.txt
sed -i 's/\_/\\\_/g' ./file.txt
Run Code Online (Sandbox Code Playgroud)
它是否正确?
遗憾的是,该文件太大而无法在任何GUI软件中打开,因此sed使用文本编辑器检查我的行是否正确是很困难的.我尝试搜索grep,但搜索没有按预期工作(例如下面,我搜索任何包含"$"的行):
grep "\$" file.txt
Run Code Online (Sandbox Code Playgroud)
grep替换成功检查线路?我注意到我的目录中有很多文件,称为"sedAbCdEf"等.
/tmp/吗?更新:
我检查了脚本,直到找到了制作文件的脚本.以下是一些示例代码:
#!/bin/bash
a=1
b=`wc -l < ./file1.txt`
while [ $a -le $b ]; do
for i in `sed -n "$a"p ./file1.txt`; do
for j in `sed -n "$a"p ./file2.txt`; do
sed -i "s/$i/\nZZ$jZZ\n/g" ./file3.txt
c=`grep -c $j file3.txt`
if [ "$c" -ge 1 ]
then
echo $j >> file4.txt
echo "Replaced "$i" with "$j" "$c" times ("$a"/"$b")."
fi
echo $i" not found ("$a"/"$b")."
a=`expr $a + 1`
done
done
done
Run Code Online (Sandbox Code Playgroud) 我有一个包含许多百分比,加号和管道标志的文件.我想用代码替换它们,以便在TeX中使用.
%成为\textpercent.+成为\textplus.|成为\textbar.这是我正在使用的代码,但它不起作用:
sed -i "s/\%/\\\textpercent /g" ./file.txt
sed -i "s/|/\\\textbar /g" ./file.txt
sed -i "s/\+/\\\textplus /g" ./file.txt
Run Code Online (Sandbox Code Playgroud)
如何用这段代码替换这些符号?