我使用grep将文件中的内容拉出来并将其写入输出中。我希望连接所有这些条目的文本。目前,我分两步完成:1。grep,2。修改excel中的文本输出。
grep -E -w "entry1" file1 >output.csv
在output.csv中我得到四行匹配
A, entry1
B, entry1
C, entry1
D, entry1
我在excel中打开此文件并将column1中的行标题修改为
A_type1, entry1
B_type1, entry1
C_type1, entry1
D_type1, entry1
是否有可能在单行中做同样的事情?
答案 0 :(得分:1)
根据你给出的grep输出,我认为这一行应该有所帮助:
awk -F, '$2~/entry1/{print $1"_type1" FS $2}' file
答案 1 :(得分:0)
您可以执行类似
的操作 $ grep -E "A|B" sample.txt | perl -pe 's/A/A_type1/g; s/B/B_type1/g'
这将过滤输入文件并在输出上应用转换。输入文件保持不变。
如果您希望在文件中执行inplace repalcement而不影响其他行,则可以使用“sed”。在这种情况下,输入文件会更新。
sed -i 's/A/A_type1/g; s/B/B_typ2/g' sample.txt
admin@DESKTOP-J2E0MU7 /cygdrive/c/workspace/temp
$ cat sample.txt
A line
B file
C test1
D sample
E something else
F what
G else
A other line
B second occurence
admin@DESKTOP-J2E0MU7 /cygdrive/c/workspace/temp
$ grep -E "A|B" sample.txt | perl -pe 's/A/A_type1/g; s/B/B_type1/g'
A_type1 line
B_type1 file
A_type1 other line
B_type1 second occurence
答案 2 :(得分:0)
使用awk将“_type1”附加到grep的任何内容的column1上的另一种解决方案。
$ grep -E "A|B" sample.txt | awk '{$1=$1"_type";print}''\
答案 3 :(得分:0)
awk -F, '{print $1"_type1",$2}' OFS=, file
A_type1, entry1
B_type1, entry1
C_type1, entry1
D_type1, entry1