假设我有一个名为'file.csv'的文件,其中包含以下数据
A:qwe
B:ert
C:rty
如何在第2行和第3行的':'之前打印出所有内容。 所以我希望我的输出只是B和C. 试过了
cat file.csv | awk -F ':' '{print $1}'
但是打印出A也不太确定如何实现'NR == 2,NR == 3'到此
答案 0 :(得分:0)
Awk在这里看起来像是荒谬的过度杀伤力。怎么样:
tail -n 2 | cut -d ":" -f 1
答案 1 :(得分:0)
对于从n到m的一系列行,您可以使用sed -n '2,3p' file | cut -d: -f1
组合
awk
或仅awk -F: 'NR>=2 && NR<=3 {print $1}' file
{{1}}
答案 2 :(得分:0)
sed
比awk
更容易
sed -n '2,3s/:.*//p' file.csv
但是我想知道你是否真的想要你想要第二和第三行,而不是其他一些标准。
答案 3 :(得分:0)
Perl解决方案:
perl -F: -lane 'print $F[0] if $. > 1' file
如果为$,则打印第一个输入字段。 (行号变量)&gt; 1个
使用以下命令行选项:
n
循环输入文件的每一行,不自动打印每一行
l
在处理之前删除换行符,然后将其添加回来
a
autosplit模式 - perl会自动将输入行拆分为@F数组。默认为在空格上拆分
F
autosplit修饰符,在此示例中拆分为&#39;:&#39;
e
执行perl代码
答案 4 :(得分:0)
假设:
$ echo "$tgt"
A:qwe
B:ert
C:rty
你可以使用Perl和&#39;触发器&#39;运算符在两个行号之间打印文件或文本:
$ echo "$tgt" | perl -lne 'print $1 if /(^[^:]+)/ and 2..3'
B
C
也适用于文件(显然)