我试图输出(打印)文件名,然后输出目录中的奇数行文件。
我要输出的内容
linereader: line 1
linereader: line 3
lineareder2: q
lineareader2: e
我得到的是
linereader:
line 1
line 3
line 5
linereader2:
q
e
q
e
我的代码
for file in *;
do
if [ -f "$file" ]; then
echo "$file": && sed -n 1~2p $file
fi
done
答案 0 :(得分:1)
您可以使用sed替换:
for file in *;
do
if [ -f "$file" ]; then
sed -n "1~2s/.*/$file: &/p" $file
fi
done
此替换应用于奇数行1~2s
。它将匹配行/.*/
中的所有文本,将其替换为文件名加上匹配的文本/$file: &/
,并将其打印到标准输出p
。
答案 1 :(得分:0)
IMO,最简洁(最容易理解)的方式是:
echo $file
awk 'NR % 2 == 1 {print}' $file
这几乎完全表达了您的要求。 NR
保留行号,%
是模运算符。