输入文件包含以下行,并使用一个文件中的第二个字段“+”符号行和另一个文件中的“ - ”符号行隔离这些行:
24 + I am the Five man
22 - Who are you? The new number two!
51 + . . . And four on the floor
42 +
16 - Who is number one?
33 - I three you.
当$ 2为'+',a = $ 1 + 500且b = $ 1-500时,$ 2是' - ',a = $ 1-500,b = $ 1 + 500? 'a'和'b'是新变量。
答案 0 :(得分:5)
另一个选择
awk 'BEGIN{m["+"]="plus.txt";m["-"]="minus.txt"} $2 ~ /^[+-]$/{print>>m[$2]}'
答案 1 :(得分:5)
使用Perl:
perl -lne '/^\d+ -/ && print(STDERR) || print' input 2> minus > plus
略有不同的形式:
perl -lpe 'select(/^\d+ -/?STDERR:STDOUT)' input 2> minus > plus
也可以使用tee
:
tee >(sed -n '/^[0-9]* -/p' > minus) < input | \
sed -n '/^[0-9]* +/p' > plus
答案 2 :(得分:4)
此解决方案将输出过滤到文件f1和f2。
awk '{ if ($2 == "+") print >>"f1"; else if ($2=="-") print >>"f2"; }' datafile
答案 3 :(得分:4)
这会将“+”行放在file1中,其他行放在file2中:
awk '{print > ("file" ($2~/+/?1:2))}' file
答案 4 :(得分:2)
GNU代码sed:
sed '/\S\+\s\++/!D' file > plus.txt
sed '/\S\+\s\++/D' file > minus.txt
答案 5 :(得分:2)
使用awk
您只需执行以下操作:
awk '$2=="+"{print>"f1";next}{print>"f2"}' file
<强>演示:强>
$ cat file
24 + I am the Five man
22 - Who are you? The new number two!
51 + . . . And four on the floor
42 +
16 - Who is number one?
33 - I three you.
$ awk '$2=="+"{print>"f1";next}{print>"f2"}' file
$ cat f1
24 + I am the Five man
51 + . . . And four on the floor
42 +
$ cat f2
22 - Who are you? The new number two!
16 - Who is number one?
33 - I three you.
答案 6 :(得分:-1)
问题的标题有点不清楚,我马上就会编辑它。同时这里是答案:
awk '/^[0-9]+ \+/{print > "a"} /^[0-9]+ -/{print > "b"}'