我有一堆看起来像这样的行:
pword
我需要在get_terms()
$cats = get_terms('category', array(
'fields' => 'ids',
'exclude' => '1',
'hide_empty' => false,
));
该文件确实有评论等。所以我只需要在以some_command -arg1 -arg2 ITEM -arg3
开头的行上进行上述操作。
有近1000条此类线条,我无法手动对其进行图像处理。即使使用块视觉模式也会很棘手,因为实际上没有对齐。
我在想ITEM
将成为我的朋友。some_command
的位置是固定的,所以我知道列号。但是,除了some_command
之外,我如何告诉awk
打印ITEM
然后awk
以及$1
到$6
之外的所有其他列?并且只在以$2
开头的行上执行此操作?
答案 0 :(得分:1)
@shikhanshu:试试:
awk '/some_command/{$2="ITEM" FS $2;sub(/.*/,"",$(NF-1))} 1' Input_file
OR
awk '/some_command/{$2=$(NF-1) FS $2;sub(/.*/,"",$(NF-1))} 1' Input_file
答案 1 :(得分:0)
一个sed版本
sed -e '/^[[:blank:]]*#/b' -e 's/\(some_command\)\(.*\)[[:blank:]]\([^-][^[:blank:]]\{1,\}\)/\1 \3\2/' YourFile
假设您的商品不是以yuour样本中的-
开头(更简单),如果不是空格是分隔符并需要更多代码
awk版
awk '/^[[:blank:]]*some_command/ {t=$4; $4=$3; $3=$2; $2=t}7' YourFile