我想添加一个包含两个不同标签的列。假设我有这个文字
1 aa bb cc
1 dd ee ff
2 gg hh ii
3 ll mm nn
4 oo pp qq
我希望在前两行的第一列中添加1,在剩余行的第一列中添加2,这样最终我将获得该文本:
<?php
if(isset($_POST['ip'])){
if($IP = filter_input(INPUT_POST, 'ip',
FILTER_SANITIZE_STRING)){
$add_ip = $mysqli->prepare("INSERT INTO block_ip(b_ip)
VALUES(?)");
$add_ip->bind_param("s",$IP);
$add_ip->execute();
$add_ip->store_result();
$add_ip->close();
echo 1;
}
else {
echo 0;
}
exit;
}
?>
你知道怎么做吗? 谢谢
答案 0 :(得分:0)
我假设您要使用shell执行此操作,如果您的数据位于名为input.txt
的文件中,则可以使用cat -n
或nl
。
% tail -n+2 input.txt | cat -n
1 dd ee ff
2 gg hh ii
3 ll mm nn
4 oo pp qq
% tail -n+2 input.txt | nl
1 dd ee ff
2 gg hh ii
3 ll mm nn
4 oo pp qq
可以手动添加第一行。
如果输入文件中有空行,则两个命令的行为会有所不同。
答案 1 :(得分:0)
假设您正在Linux shell中处理文本文件,可以使用awk
。您的问题说明说您需要两个标签1
和2
,这将是
cat input.txt | awk '{print (NR<=2 ? "1 ":"2 ") $0}'
您的预期输出表明您希望前两行标记为1
,并从第三行开始从2
开始计数,这将是
cat input.txt | awk '{print (NR<=2 ? "1 ":NR-1" ") $0}'
答案 2 :(得分:0)
请您试着跟随并告诉我这是否对您有帮助。
解决方案1:通过使用名为count的变量,其初始值为1,然后检查行号是1还是2,然后只需在$ 1中追加1,否则将变量计数的值增加1并追加价值1美元。
awk -v count=1 '{$1=NR==1||NR==2?1 FS $1:++count FS $1} 1' Input_file
解决方案第二:检查行号是1还是2,然后简单地将1添加到$ 1,否则检查行是否为NULL然后添加NR-1(这意味着从它的行号中减去1)并加上$ 1的价值。
awk '{$1=NR==1||NR==2?1 FS $1:(NF?FNR-1 FS $1:"")} 1' Input_file