⑴ shell 如何按照特定内容以及范围拆分成多个文件
#!/bin/awk
{
if(/[ ]*create table/){
name=$0;
sub("[ ]*create table ","",name);
}
print>name;
}
就是判断当前行是不是create table 如果是,就设置name变量为table 名。
随后把当前行输出到版name文件。
因此每次遇到create table 就会权变换name 文件名。不需要判断;结尾的行。
⑵ 如何用SHELL正确分割CSV文件中的列
2种方法:
#方法1:
awk -F, '{print $1","$4","$7}' no1/test.csv no2/test.csv no3/test.csv > newtext.csv
#方法2:
cat no1/test.csv no2/test.csv no3/test.csv | cut -d, -f1,4,7 > newtext.csv
⑶ shell文件中一行切多行,如何高效实现,请高人指点,非常感谢!
其实很简单,通过shell,然后搭配简单的awk就可以实现。
awk-F"%"'{print$1$2" "$1$3" "$1$4" "$1$5" "$1$6" "$1$7}'1
你可以通过shell写一个按行内读取文件,然后进行处理容。
如果在复杂点awk,应该可以一行实现,不过今天刚出差回来,有点累了,实在懒得想了。
告诉你思路了,虽然可能效率会稍微比awk直接用低点不过完成工作应该没问题。
⑷ Shell脚本如何实现对一个文件按关键字行来分成若干个小文件
五行关键字应该分割为6个文件啊?要不就是只取关键字行以下的行。
思路:用sed得出包含这个关键字的行的行号,然后根据行号分割文件。
#!/bin/sh
myFile=TestResult.txt
num=5
count=0
line=`sed-n'/FILE_TESTCASERESULT/='$myFile`
fornin$line
do
[$count-eq0]&&letstartLine=n+1&&continue
letcount+=1
letendLine=n-1
[$count-eq$num]&&endLine=`sed-n'$='myFile`
sed-n"${startLine},${endLine}p;q"$myFile>result_${count}.txt
letstartLine=n+1
done
结果保存到result_1.txt,result_2.txt,result_3.txt,result_4.txt,result_5.txt五个文件中。
注:关键字行本身不保存。如果要保存关键字行,请修改代码中的 let startLine=n+1 为 startLine=$n (两处地方)。