Row*_*and 11 command-line io-redirection awk shell-script text-processing
我有多个文件,例如:(实际上我有 80 个)
文件1.dat
2 5
6 9
7 1
Run Code Online (Sandbox Code Playgroud)
文件2.dat
3 7
8 4
1 3
Run Code Online (Sandbox Code Playgroud)
我想最终得到一个包含所有第二行的文件。IE
输出文件
6 9
8 4
Run Code Online (Sandbox Code Playgroud)
到目前为止我所拥有的虽然文件名循环但然后覆盖它之前的文件。例如,上述文件的输出就是
8 4
Run Code Online (Sandbox Code Playgroud)
我的 shell 脚本如下所示:
后.sh
TEND = 80
TINDX = 0
while [ $TINDX - lt $TEND]; do
awk '{ print NR==2 "input-$TINDX.dat > output.dat
TINDX = $((TINDX+1))
done
Run Code Online (Sandbox Code Playgroud)
jim*_*mij 20
删除while循环并使用 shell 括号扩展以及FNR内置awk变量:
awk 'FNR==2{print $0 > "output.dat"}' file{1..80}.dat
Run Code Online (Sandbox Code Playgroud)
sed 就足够了:
sed -sn 2p file{1..80}.dat > output.dat
Run Code Online (Sandbox Code Playgroud)
-s 需要选项来打印每个文件的第二行,否则只会打印第一个文件的第二行。