添加具有不同标签的列

时间:2017-09-13 06:44:41

标签: linux

我想添加一个包含两个不同标签的列。假设我有这个文字

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;
      }
    ?>

你知道怎么做吗? 谢谢

3 个答案:

答案 0 :(得分:0)

我假设您要使用shell执行此操作,如果您的数据位于名为input.txt的文件中,则可以使用cat -nnl

% 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。您的问题说明说您需要两个标签12,这将是

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